*** empty log message ***
authorMatthew Mondor <mmondor@pulsar-zone.net>
Wed, 4 Jun 2003 06:00:17 +0000 (06:00 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Wed, 4 Jun 2003 06:00:17 +0000 (06:00 +0000)
20 files changed:
mmsoftware/TODO
mmsoftware/mmftpd/ChangeLog
mmsoftware/mmftpd/etc/mmftpd.conf
mmsoftware/mmftpd/src/mmftpd.c
mmsoftware/mmftpd/src/mmftpd.conf.5
mmsoftware/mmlib/mmfd.h
mmsoftware/mmlib/mmreadcfg.c
mmsoftware/mmlib/mmreadcfg.h
mmsoftware/mmmail/ChangeLog
mmsoftware/mmmail/etc/mmpop3d.conf
mmsoftware/mmmail/etc/mmsmtpd.conf
mmsoftware/mmmail/src/mmpop3d/mmpop3d.c
mmsoftware/mmmail/src/mmpop3d/mmpop3d.conf.5
mmsoftware/mmmail/src/mmsmtpd/mmsmtpd.c
mmsoftware/mmmail/src/mmsmtpd/mmsmtpd.conf.5
mmsoftware/mmstatd/ChangeLog
mmsoftware/mmstatd/etc/mmstatd.conf
mmsoftware/mmstatd/src/mmstat.c
mmsoftware/mmstatd/src/mmstatd.c
mmsoftware/mmstatd/src/mmstatd.conf.5

index a724f39..32a51f0 100644 (file)
@@ -1,4 +1,4 @@
-$Id: TODO,v 1.9 2003/05/01 02:06:22 mmondor Exp $
+$Id: TODO,v 1.10 2003/06/04 06:00:16 mmondor Exp $
 
 
 
@@ -98,6 +98,46 @@ MMSTATD
   Or, defaults to the current format and:
   -h human etc...
 
+- BETTER KEY LOOKUP ALGORITHM
+  Since I started to more heavily use mmstatd and store alot of keys in it,
+  I noticed that the linear 64-bit hash lookup method which was originally
+  ideal for small registries started to consist of the main bottleneck of
+  the application. I use mmstatd to store keys based on automatic on-the-fly
+  apache log parsing for instance, and log statistics about file transfers
+  and bytes transfered for many virtualhosts.
+  It would be nice if the key lookup method of mmstatd was more efficient when
+  used with a very large registry. Various methods would be possible to
+  improve it's performance:
+  - Separate '.' separated elements and store them in a tree hierarchy.
+    Although this could help to narrow down the search, it still would be
+    nice to use a hashing system to lookup through the nodes of the same
+    sublevel.
+  - If a range-determined hash algorithm was used, with the possibility of
+    more collisions however, it would be possible to map an index to locate
+    the key node quickly. However, because of collisions, buckets would need
+    to be used.
+  - It would be possible to maintain a btree for the characters of each
+    node of a key, so that we could easily determine pre-existance of a
+    key, etc. So we would have a tree of dot separated nodes, and a tree
+    of node name for each. However, lookup, insert, removal and rename
+    operations could be tricky and actually be slow if not properly
+    implemented. Also, the memory requirements to store the keys in
+    memory could become larger.
+  - Using a general purpose storage library like db3/4 would be very easy.
+    However, as it only deals with key/data pairs, it would most likely not
+    be ideal with very large registries. I beleive that a method especially
+    designed with the current system in mind could be more efficient. Moreover,
+    as mmstatd already handles a recovery log, db library's would not be
+    necessary. Also, because all atomic transactions are performed sequencially
+    by the same process, no special synchronization is required (another of
+    nice db features).
+  - Using mysql would be suboptimal, and would require a huge dependancy which
+    alot of software are happy to avoid.
+
+- It is possible that in the future mmstat key nodes be separated by '/'
+  instead of '.' which is a character which we may want to store in a node
+  name (i.e. a filename).
+
 
 
 MMLIB/MMFD
index e673ceb..0e09155 100644 (file)
@@ -1,4 +1,4 @@
-$Id: ChangeLog,v 1.13 2003/04/27 19:48:03 mmondor Exp $
+$Id: ChangeLog,v 1.14 2003/06/04 06:00:16 mmondor Exp $
 
 
 
@@ -6,10 +6,27 @@ Release: mmftpd 0.0.16 devl
 Date   : April 25, 2003
 By     : Matthew Mondor
 
+* Fix requireing a minor configuration file change
+  - The GROUPS directive now expects groups to be comma-separated instead of
+    space-separated. The quotes then of course also become optional if multiple
+    groups are specified. This was made because that mmreadcfg(3) library is
+    also used by other of my projects for which comma-separated groups were
+    required.
 * Miscelaneous new features
   - When user has no rights to modify or upload (i.e. usually anonymous user)
     all files now appear as read-only and non-executable, and directories
     as read-only, when using LIST.
+* Bug fixes
+  - Fixed ALIGN_CEIL alignment macros which used to always add bytes even
+    if the value was already aligned properly. A few bytes were often wasted
+    as the result of this.
+  - The STAT command would not properly format the off_t type on systems such
+    as Linux/i386 on which off_t is 32-bit. This was fixed by using type
+    casting to the expected 64-bit type.
+  - On systems using glibc (such as Linux), the <crypt.h> headerfile has to
+    be explicitely included to use the crypt(3) function.
+  - Some systems do not define nfds_t in <poll.h> headerfile
+    (like Linux/glibc) sine preprocessor conditions were added for this.
 * Other
   - The FIFO library performance was improved and mmftpd now allocates FIFO
     buffers more efficiently using a dynamic pool, it used to be one of
@@ -17,13 +34,11 @@ By     : Matthew Mondor
     startup and disconnection. These FIFOs are used to remember which
     directories were visited recently to not flood the user with README file
     contents, when enabled.
-  - Fixed ALIGN_CEIL alignment macros which used to always add bytes even
-    if the value was already aligned properly. A few bytes were often wasted
-    as the result of this.
   - Interface of various lower layer functions and macros were improved, and
     mmftpd was migrated to use the new ones.
   - Where appropriate and possible, const keyword was added to the function
-    parameters.
+    parameters and global data types.
+  - Some more source cleanups
 
 
 
index a7ee932..ede371d 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mmftpd.conf,v 1.2 2002/12/12 20:54:21 mmondor Exp $
+; $Id: mmftpd.conf,v 1.3 2003/06/04 06:00:16 mmondor Exp $
 ;
 ; mmftpd configuration file (/etc/mmftpd.conf)
 ; and # are considered comments, and can happen at start or end of line.
@@ -28,7 +28,7 @@ PID_PATH      "/var/run/mmftpd.pid"
 ; User mmftpd should run as
 USER           "mmftpd"
 ; Groups process should be part of
-GROUPS         "mmftpd mmstat"
+GROUPS         mmftpd,mmstat
 ;
 ; Increase this to higher values if high server load is expected
 ALLOC_BUFFERS  1
index d12b7ad..50435eb 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmftpd.c,v 1.18 2003/05/28 06:39:44 mmondor Exp $ */
+/* $Id: mmftpd.c,v 1.19 2003/06/04 06:00:16 mmondor Exp $ */
 
 /*
  * Copyright (C) 2002-2003, Matthew Mondor
@@ -80,7 +80,7 @@
 
 MMCOPYRIGHT("@(#) Copyright (c) 2002-2003\n\
 \tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmftpd.c,v 1.18 2003/05/28 06:39:44 mmondor Exp $");
+MMRCSID("$Id: mmftpd.c,v 1.19 2003/06/04 06:00:16 mmondor Exp $");
 
 
 
@@ -2355,7 +2355,7 @@ main(int argc, char **argv)
     mm_strcpy(CONF.PASSWD_FILE, "/etc/mmftpdpasswd");
     mm_strcpy(CONF.PID_PATH, "/var/run/mmftpd.pid");
     mm_strcpy(CONF.USER, "mmftpd");
-    mm_strcpy(CONF.GROUPS, "mmftpd mmstat");
+    mm_strcpy(CONF.GROUPS, "mmftpd,mmstat");
     mm_strcpy(CONF.LOG_FACILITY, "LOG_AUTHPRIV");
     mm_strcpy(CONF.SERVER_NAMES, "ftp.localhost");
     mm_strcpy(CONF.LISTEN_IPS, "127.0.0.1");
index 0a1d4e7..2db67d9 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: mmftpd.conf.5,v 1.3 2003/01/01 14:54:10 mmondor Exp $
+.\" $Id: mmftpd.conf.5,v 1.4 2003/06/04 06:00:16 mmondor Exp $
 .\"
 .\" Copyright (C) 2002-2003, Matthew Mondor
 .\" All rights reserved.
@@ -107,13 +107,12 @@ was set.
 .It Nm USER Ar "user"
 Unprivileged user server process should run as.
 .Pp
-.It Nm GROUPS Ar "group ..."
-Groups process should be part of, separated by spaces. It is important to
-also include here the 'mmstat' group, as well as all groups which users of
+.It Nm GROUPS Ar "group,..."
+Groups process should be part of, separated by commas, without any spaces.
+It is important to also include here the 'mmstat' group, as well as all groups
+which users of
 .Xr mmftpdpasswd 5
 are allowed to use.
-Do not forget to enclose the value of this keyword in double quotes as more
-than one space separated entries may exist.
 .Pp
 .It Nm ALLOC_BUFFERS Ar "number"
 On systems which are expected to operate under high load, serving a large
@@ -274,7 +273,7 @@ CHROOT_DIR              ""
 PASSWD_FILE             "/etc/mmftpdpasswd"
 PID_PATH                "/var/run/mmftpd.pid"
 USER                    mmftpd
-GROUPS                  "mmftpd mmstat"
+GROUPS                  mmftpd,mmstat
 LOG_FACILITY            LOG_AUTHPRIV
 LOG_LEVEL               3
 ALLOC_BUFFERS           1
index 3736cbb..6622528 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmfd.h,v 1.5 2003/04/01 04:10:12 mmondor Exp $ */
+/* $Id: mmfd.h,v 1.6 2003/06/04 06:00:16 mmondor Exp $ */
 
 /*
  * Copyright (C) 2000-2003, Matthew Mondor
 #include <mmtypes.h>
 
 
+#ifdef __GLIBC__
+typedef unsigned int nfds_t;
+#endif /* __GLIBC__ */
+
+
 
 
 /* DEFINITIONS */
index ccc2e1e..22810bc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmreadcfg.c,v 1.4 2003/05/28 06:39:44 mmondor Exp $ */
+/* $Id: mmreadcfg.c,v 1.5 2003/06/04 06:00:16 mmondor Exp $ */
 
 /*
  * Copyright (C) 1991-2003, Matthew Mondor
@@ -51,7 +51,7 @@
 
 MMCOPYRIGHT("@(#) Copyright (c) 1991-2003\n\
 \tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmreadcfg.c,v 1.4 2003/05/28 06:39:44 mmondor Exp $");
+MMRCSID("$Id: mmreadcfg.c,v 1.5 2003/06/04 06:00:16 mmondor Exp $");
 
 
 
@@ -77,7 +77,7 @@ const char *const mmreadcfg_strings[] = {
 
 
 bool
-mmreadcfg(char *cfgn, carg_t *arg, cres_t *res)
+mmreadcfg(const char *cfgn, carg_t *arg, cres_t *res)
 {
     FILE *cfg;
     char buf[1025], *buf2;
@@ -267,7 +267,7 @@ mmreadcfg(char *cfgn, carg_t *arg, cres_t *res)
 
 
 bool
-mmmapstring(cmap_t *cmap, char *str, long *res)
+mmmapstring(cmap_t *cmap, const char *str, long *res)
 {
     while (cmap->CM_Str) {
        if (!mm_strcmp(cmap->CM_Str, str)) {
@@ -282,7 +282,7 @@ mmmapstring(cmap_t *cmap, char *str, long *res)
 
 
 gid_t *
-mmgetgidarray(int *n, char *groups)
+mmgetgidarray(int *n, const char *groups)
 {
     gid_t *array;
     struct group *grp;
@@ -291,7 +291,7 @@ mmgetgidarray(int *n, char *groups)
 
     mm_strncpy(wgroups, groups, 255);
 
-    if ((*n = mm_straspl(args, wgroups, NGROUPS_MAX)) > 0) {
+    if ((*n = mm_strspl(args, wgroups, NGROUPS_MAX, ',')) > 0) {
        if ((array = malloc(sizeof(gid_t) * (*n)))) {
            for (i = 0; i < *n; i++) {
                if ((grp = getgrnam(args[i])))
@@ -320,7 +320,7 @@ mmfreegidarray(gid_t *array)
 
 
 uid_t
-mmgetuid(char *user)
+mmgetuid(const char *user)
 {
     struct passwd *pwd;
     uid_t id;
@@ -335,7 +335,7 @@ mmgetuid(char *user)
 
 
 gid_t
-mmgetgid(char *group)
+mmgetgid(const char *group)
 {
     struct group *grp;
     gid_t id;
@@ -350,7 +350,9 @@ mmgetgid(char *group)
 
 
 /* Intended to be called by the superuser. There is no way to retreive
- * privileges back after calling this function.
+ * privileges back after calling this function. We also check that it
+ * worked before exiting with TRUE for success. Note all the explicit
+ * 0 checking indead of boolean conditions for cleanliness.
  */
 bool
 mmdropprivs(uid_t uid, gid_t *gids, int ngids)
@@ -358,16 +360,19 @@ mmdropprivs(uid_t uid, gid_t *gids, int ngids)
 #ifndef NODROPPRIVS
     if (ngids) {
        /* First set real and effective primary group id */
-       if (setgid(gids[0]) || setegid(gids[0]))
+       if (setgid(gids[0]) != 0 || setegid(gids[0]) != 0)
            return (FALSE);
        ngids--;
        /* Set secondary group ids if any */
-       if (ngids)
-           if (setgroups(ngids, &gids[1]))
+       if (ngids > 0)
+           if (setgroups(ngids, &gids[1]) != 0)
                return (FALSE);
     }
     /* Finally set the real and effective user id */
-    if (setuid(uid) || seteuid(uid))
+    if (setuid(uid) != 0 || seteuid(uid) != 0)
+       return (FALSE);
+    /* Now make sure that it worked :) */
+    if (getuid() != uid || geteuid() != uid)
        return (FALSE);
 #endif /* !NODROPPRIVS */
 
index c18db11..14d37c6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmreadcfg.h,v 1.3 2003/05/28 06:39:44 mmondor Exp $ */
+/* $Id: mmreadcfg.h,v 1.4 2003/06/04 06:00:16 mmondor Exp $ */
 
 /*
  * Copyright (C) 1991-2003, Matthew Mondor
@@ -110,12 +110,12 @@ extern const char *const mmreadcfg_strings[];
 
 
 
-bool mmreadcfg(char *, carg_t *, cres_t *);
-bool mmmapstring(cmap_t *, char *, long *);
-gid_t *mmgetgidarray(int *, char *);
+bool mmreadcfg(const char *, carg_t *, cres_t *);
+bool mmmapstring(cmap_t *, const char *, long *);
+gid_t *mmgetgidarray(int *, const char *);
 gid_t *mmfreegidarray(gid_t *);
-uid_t mmgetuid(char *);
-gid_t mmgetgid(char *);
+uid_t mmgetuid(const char *);
+gid_t mmgetgid(const char *);
 bool mmdropprivs(uid_t, gid_t *, int);
 
 
index 60e54d2..31d17a7 100644 (file)
@@ -1,4 +1,4 @@
-$Id: ChangeLog,v 1.15 2003/05/01 02:06:22 mmondor Exp $
+$Id: ChangeLog,v 1.16 2003/06/04 06:00:16 mmondor Exp $
 
 
 
@@ -6,6 +6,12 @@ Release: mmmail 0.0.22 devl
 Date   : April 25, 2003
 By     : Matthew Mondor
 
+* Fix requireing a minor configuration file change
+  - The GROUPS directive now expects groups to be comma-separated instead of
+    space-separated. The quotes then of course also become optional if multiple
+    groups are specified. This was made because that mmreadcfg(3) library is
+    also used by other of my projects for which comma-separated groups were
+    required.
 * Various
   - Fixed ALIGN_CEIL alignment macros which used to always add bytes even
     if the value was already aligned properly. As a result a few bytes of
index a8f0ae7..a6c3c16 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mmpop3d.conf,v 1.2 2002/12/12 20:54:21 mmondor Exp $
+; $Id: mmpop3d.conf,v 1.3 2003/06/04 06:00:16 mmondor Exp $
 ;
 ; mmpop3d mmmail component configuration file (/etc/mmpop3d.conf)
 ; and # are considered comments, and can occur at start or end of line.
@@ -23,7 +23,7 @@ PID_PATH      "/var/run/mmpop3d.pid"
 ; User mmpop3d should run as
 USER           "mmmail"
 ; Groups process should be part of
-GROUPS         "mmmail mmstat"
+GROUPS         mmmail,mmstat
 ;
 ; Increase this to higher values if high server load is expected
 ALLOC_BUFFERS  1
index 9e630d3..29b8339 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mmsmtpd.conf,v 1.2 2002/12/12 20:54:21 mmondor Exp $
+; $Id: mmsmtpd.conf,v 1.3 2003/06/04 06:00:16 mmondor Exp $
 ;
 ; mmsmtpd configuration file (/etc/mmsmtpd.conf)
 ; and # are considered comments, and can happen at start or end of line.
@@ -23,7 +23,7 @@ PID_PATH      "/var/run/mmsmtpd.pid"
 ; User mmsmtpd should run as
 USER           "mmmail"
 ; Groups process should be part of
-GROUPS         "mmmail mmstat"
+GROUPS         mmmail,mmstat
 ;
 ; Increase this to higher values if high server load is expected
 ALLOC_BUFFERS  1
index 72563f5..82b4a02 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmpop3d.c,v 1.12 2003/05/28 06:39:45 mmondor Exp $ */
+/* $Id: mmpop3d.c,v 1.13 2003/06/04 06:00:16 mmondor Exp $ */
 
 /*
  * Copyright (C) 2000-2003, Matthew Mondor
@@ -76,7 +76,7 @@
 
 MMCOPYRIGHT("@(#) Copyright (c) 2002-2003\n\
 \tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmpop3d.c,v 1.12 2003/05/28 06:39:45 mmondor Exp $");
+MMRCSID("$Id: mmpop3d.c,v 1.13 2003/06/04 06:00:16 mmondor Exp $");
 
 
 
@@ -264,7 +264,7 @@ main(int argc, char **argv)
     *CONF.CHROOT_DIR = 0;
     mm_strcpy(CONF.PID_PATH, "/var/run/mmpop3d.pid");
     mm_strcpy(CONF.USER, "mmmail");
-    mm_strcpy(CONF.GROUPS, "mmmail mmstat");
+    mm_strcpy(CONF.GROUPS, "mmmail,mmstat");
     mm_strcpy(CONF.LOG_FACILITY, "LOG_AUTHPRIV");
     mm_strcpy(CONF.LISTEN_IPS, "127.0.0.1");
     mm_strcpy(CONF.SERVER_NAMES, "pop3.localhost");
index b43e303..43ff99e 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: mmpop3d.conf.5,v 1.3 2003/01/01 14:54:11 mmondor Exp $
+.\" $Id: mmpop3d.conf.5,v 1.4 2003/06/04 06:00:16 mmondor Exp $
 .\"
 .\" Copyright (C) 2002-2003, Matthew Mondor
 .\" All rights reserved.
@@ -120,11 +120,9 @@ was enabled.
 .It Nm USER Ar "user"
 Unprivileged user server process should run as.
 .Pp
-.It Nm GROUPS Ar "group ..."
-Groups process should be part of, separated by spaces. It is important to
-also include here the 'mmstat' group.
-Do not forget to enclose the value of this keyword in double quotes as more
-than one space separated entries may exist.
+.It Nm GROUPS Ar "group,..."
+Groups process should be part of, separated by commas, without spaces. It is
+important to also include here the 'mmstat' group.
 .Pp
 .It Nm ALLOC_BUFFERS Ar "number"
 On systems which are expected to operate under high load, serving a large
@@ -270,7 +268,7 @@ ASYNC_PROCESSES         3
 CHROOT_DIR              ""
 PID_PATH                "/var/run/mmpop3d.pid"
 USER                    mmmail
-GROUPS                  "mmmail mmstat"
+GROUPS                  mmmail,mmstat
 LOG_FACILITY            LOG_AUTHPRIV
 SERVER_NAMES            "pop3.localhost"
 LISTEN_IPS              "127.0.0.1"
index 6705284..c279a9c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmsmtpd.c,v 1.16 2003/05/28 06:39:45 mmondor Exp $ */
+/* $Id: mmsmtpd.c,v 1.17 2003/06/04 06:00:16 mmondor Exp $ */
 
 /*
  * Copyright (C) 2001-2003, Matthew Mondor
@@ -74,7 +74,7 @@
 
 MMCOPYRIGHT("@(#) Copyright (c) 2002-2003\n\
 \tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmsmtpd.c,v 1.16 2003/05/28 06:39:45 mmondor Exp $");
+MMRCSID("$Id: mmsmtpd.c,v 1.17 2003/06/04 06:00:16 mmondor Exp $");
 
 
 
@@ -299,7 +299,7 @@ main(int argc, char **argv)
     *CONF.CHROOT_DIR = 0;
     mm_strcpy(CONF.PID_PATH, "/var/run/mmsmtpd.pid");
     mm_strcpy(CONF.USER, "mmmail");
-    mm_strcpy(CONF.GROUPS, "mmmail mmstat");
+    mm_strcpy(CONF.GROUPS, "mmmail,mmstat");
     mm_strcpy(CONF.LOG_FACILITY, "LOG_AUTHPRIV");
     mm_strcpy(CONF.SERVER_NAMES, "smtp.localhost");
     mm_strcpy(CONF.LISTEN_IPS, "127.0.0.1");
index 6a4345d..00d7112 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: mmsmtpd.conf.5,v 1.5 2003/01/10 03:52:36 mmondor Exp $
+.\" $Id: mmsmtpd.conf.5,v 1.6 2003/06/04 06:00:16 mmondor Exp $
 .\"
 .\" Copyright (C) 2002-2003, Matthew Mondor
 .\" All rights reserved.
@@ -120,11 +120,9 @@ was enabled.
 .It Nm USER Ar "user"
 Unprivileged user server process should run as.
 .Pp
-.It Nm GROUPS Ar "group ..."
-Groups process should be part of, separated by spaces. It is important to
-also include here the 'mmstat' group.
-Do not forget to enclose the value of this keyword in double quotes as more
-than one space separated entries may exist.
+.It Nm GROUPS Ar "group,..."
+Groups process should be part of, separated by commas, without spaces.
+It is important to also include here the 'mmstat' group.
 .Pp
 .It Nm ALLOC_BUFFERS Ar "number"
 On systems which are expected to operate under high load, serving a large
@@ -398,7 +396,7 @@ ASYNC_PROCESSES         3
 CHROOT_DIR              ""
 PID_PATH                "/var/run/mmsmtpd.pid"
 USER                    mmmail
-GROUPS                  "mmmail mmstat"
+GROUPS                  mmmail,mmstat
 LOG_FACILITY            LOG_AUTHPRIV
 SERVER_NAMES            "smtp.localhost"
 LISTEN_IPS              "127.0.0.1"
index e86989b..5a39085 100644 (file)
@@ -1,4 +1,20 @@
-$Id: ChangeLog,v 1.2 2003/04/27 19:48:04 mmondor Exp $
+$Id: ChangeLog,v 1.3 2003/06/04 06:00:16 mmondor Exp $
+
+
+
+Release: mmstatd 0.0.7 devl
+Date   : April 25, 2003
+By     : Matthew Mondor
+
+* Fix requireing a minor configuration file change
+  - The GROUPS directive now expects groups to be comma-separated instead of
+    space-separated. The quotes then of course also become optional if multiple
+    groups are specified. This was made because that mmreadcfg(3) library is
+    also used by other of my projects for which comma-separated groups were
+    required.
+* Minor interface change
+  - MMSTAT, MMSTATENT and MMSTATRES data types were changed to mmstat_t,
+    mmstatent_t and mmstatres_t for consistency with other mmsoftware style.
 
 
 
index f30cd4c..d3a6077 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: mmstatd.conf,v 1.1 2002/12/11 10:16:26 mmondor Exp $
+# $Id: mmstatd.conf,v 1.2 2003/06/04 06:00:16 mmondor Exp $
 
 # This consists of the configuration file used by both mmstatd service
 # and mmstat library initialization. See mmstatd.conf(5) man page for details.
@@ -7,9 +7,9 @@
 
 # User mmstatd should run as (usually mmstatd)
 USER           mmstatd
-# Groups mmstatd should be part of, separated by spaces 
+# Groups mmstatd should be part of, separated by commas
 # LOG_GROUP and STAT_GROUP should be specified here as well
-GROUPS         "mmstat staff"
+GROUPS         mmstat,staff
 
 
 
index bd303de..26c6611 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmstat.c,v 1.8 2003/04/27 19:48:04 mmondor Exp $ */
+/* $Id: mmstat.c,v 1.9 2003/06/04 06:00:17 mmondor Exp $ */
 
 /*
  * Copyright (C) 2002-2003, Matthew Mondor
@@ -52,7 +52,7 @@
 
 MMCOPYRIGHT("@(#) Copyright (c) 2002-2003\n\
 \tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmstat.c,v 1.8 2003/04/27 19:48:04 mmondor Exp $");
+MMRCSID("$Id: mmstat.c,v 1.9 2003/06/04 06:00:17 mmondor Exp $");
 
 
 
@@ -245,7 +245,7 @@ int stat_hreport(int argc, char **argv)
                        ent = &(index[i])->ent;
                        gmtime_r(&ent->modified, &modifiedt);
                        strftime(modified, 14, "%y%m%d.%H%M%S", &modifiedt);
-                       printf("%10lld %s %s\n", ent->value, modified,
+                       printf("%11lld %s %s\n", ent->value, modified,
                                ent->key);
                    }
 
index 11e55d1..d8fa2af 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmstatd.c,v 1.9 2003/05/28 07:01:21 mmondor Exp $ */
+/* $Id: mmstatd.c,v 1.10 2003/06/04 06:00:17 mmondor Exp $ */
 
 /*
  * Copyright (C) 2002-2003, Matthew Mondor
@@ -79,7 +79,7 @@
 
 MMCOPYRIGHT("@(#) Copyright (c) 2002-2003\n\
 \tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmstatd.c,v 1.9 2003/05/28 07:01:21 mmondor Exp $");
+MMRCSID("$Id: mmstatd.c,v 1.10 2003/06/04 06:00:17 mmondor Exp $");
 
 
 
@@ -1201,7 +1201,7 @@ main(int argc, char **argv)
 
     /* Set defaults */
     mm_strcpy(CONF.USER, "mmstatd");
-    mm_strcpy(CONF.GROUPS, "mmstat staff");
+    mm_strcpy(CONF.GROUPS, "mmstat,staff");
     mm_strcpy(CONF.LOG_FACILITY, "LOG_AUTHPRIV");
     mm_strcpy(CONF.PID_FILE, "/var/mmstatd/mmstatd.pid");
     mm_strcpy(CONF.LOCK_FILE, "/var/mmstatd/mmstatd.lock");
index c2e2810..861a4c1 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: mmstatd.conf.5,v 1.2 2003/01/01 14:54:11 mmondor Exp $
+.\" $Id: mmstatd.conf.5,v 1.3 2003/06/04 06:00:17 mmondor Exp $
 .\"
 .\" Copyright (C) 2002-2003, Matthew Mondor
 .\" All rights reserved.
@@ -69,15 +69,14 @@ of
 .It Nm USER Ar "user"
 Unprivileged user service should run as.
 .Pp
-.It Nm GROUPS Ar "group ..."
-Groups mmstatd should be part of, separated by spaces. The groups specified
+.It Nm GROUPS Ar "group,..."
+Groups mmstatd should be part of, separated by commas, without spaces.
+The groups specified
 for
 .Ar LOG_GROUP
 and
 .Ar STAT_GROUP
-should also be specified here. Do not forget to enclose the value of this
-keyword in double quotes as more than one space separated entries may
-exist.
+should also be specified here.
 .Pp
 .It Nm LOG_FACILITY Ar "facility"
 Syslog facility which should be used for error logging. Should normally be
@@ -165,7 +164,7 @@ The following defaults are used:
 .Pp
 .Bd -literal -offset indent -compact
 USER            mmstatd
-GROUPS          "mmstat staff"
+GROUPS          mmstat,staff
 LOG_FACILITY    LOG_AUTHPRIV
 PID_FILE        "/var/mmstatd/mmstatd.pid"
 LOCK_FILE       "/var/mmstatd/mmstatd.lock"