]> andersk Git - moira.git/blobdiff - gen/mailhub.dc
sync'ing files for RCS->CVS migration
[moira.git] / gen / mailhub.dc
index bd03e5c047934ec22cef91520a8dbbc5c8463dfa..86987d2474cd776018653615657bfd18394769d8 100644 (file)
@@ -123,6 +123,7 @@ struct member {
 struct list {
     char *name;
     char maillist;
+    char *description;
     char acl_t;
     int acl_id;
     struct member *m;
@@ -152,15 +153,18 @@ get_info()
      */
     EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
 
+    /* Get Locks */
+
     EXEC SQL SELECT modtime INTO :buf FROM users WHERE users_id = 0;
     EXEC SQL SELECT modtime INTO :buf FROM list WHERE list_id = 0;
 
     cnt = 0;
-    machines = create_hash(10);
+    machines = create_hash(1000);
 
     EXEC SQL DECLARE m_cursor CURSOR FOR
       SELECT mach_id, name
       FROM machine
+      WHERE status=1
       ORDER BY mach_id;
     EXEC SQL OPEN m_cursor;
     while (1) {
@@ -247,17 +251,18 @@ get_info()
     lists = create_hash(15000);
 
     EXEC SQL DECLARE l_cursor CURSOR FOR
-      SELECT list_id, name, maillist, acl_type, acl_id
+      SELECT list_id, name, maillist, description, acl_type, acl_id
       FROM list
       WHERE active != 0
       ORDER BY list_id;
     EXEC SQL OPEN l_cursor;
     while (1) {
-        EXEC SQL FETCH l_cursor INTO :id, :name, :maillistp, :type, :acl;
+        EXEC SQL FETCH l_cursor INTO :id, :name, :maillistp, :buf, :type, :acl;
         if (sqlca.sqlcode != 0) break;
        l = (struct list *) perm_malloc(sizeof(struct list));
        l->name = pstrsave(strtrim(name));
        l->maillist = maillistp;
+       l->description = pstrsave(strtrim(buf));
        l->acl_t = type[0];
        l->acl_id = acl;
        l->m = (struct member *) NULL;
@@ -311,7 +316,7 @@ get_info()
     return;
  sqlerr:
     com_err(whoami, MR_INGRES_ERR, " code %d\n", sqlca.sqlcode);
-    critical_alert("DCM", "Hesiod build encountered DATABASE ERROR %d",
+    critical_alert("DCM", "Mailhub build encountered DATABASE ERROR %d",
                   sqlca.sqlcode);
     exit(MR_INGRES_ERR);
 }
@@ -438,12 +443,12 @@ int copy;
 }
 
 
-/* Illegal chars: ! " % ( ) , / : ; < = > @ [ \ ] ^ { | } */
+/* Illegal chars: ! " % ( ) , / : ; < = > @ [ \ ] ^ { | } */
 
 static int illegalchars[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ^@ - ^O */
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ^P - ^_ */
-    0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, /* SPACE - / */
+    0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, /* SPACE - / */
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, /* 0 - ? */
     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* @ - O */
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, /* P - _ */
@@ -535,6 +540,7 @@ register struct list *l;
     register struct member *m;
     register struct user *u;
 
+    put_fill(out, l->description);
     if (l->acl_t ==  'L' &&
        (l1 = (struct list *) hash_lookup(lists, l->acl_id)))
       fprintf(out, "owner-%s: %s\n%s: ", l->name, l1->name, l->name);
@@ -565,11 +571,16 @@ register char *s;
 {
     register wwid;
     static int cont = 1;
+    char str[8];
 
     wwid = strlen(s);
 
     if (!bol && awid + wwid + 2 > AL_MAX_WID) {
-       fprintf(out, ",\n\tcontinuation-%d\ncontinuation-%d: ", cont, cont);
+       sprintf(str, "%c%c%c%c%c%c", random() % 26 + 97, random() % 26 + 97,
+                                     random() % 26 + 97, random() % 26 + 97,
+                                    random() % 26 + 97, random() % 26 + 97);
+       str[6] = '\0';                  
+       fprintf(out, ",\n\tcont%d-%s\ncont%d-%s: ", cont, str, cont, str);
        cont++;
        awid = lwid = 17 + wwid;
        fputs(s, out);
@@ -594,6 +605,53 @@ register char *s;
 }
 
 
+put_fill(aliases, string)
+FILE *aliases;
+register char *string;
+{
+    register char *c;
+    register int lwid;
+    register int wwid;
+
+    if (string == 0 || *string == 0) return;
+    fputs("#  ", aliases);
+    lwid = 3;
+
+    while (1) {
+       while (*string && *string == ' ') string++;
+       c = (char *)index(string, ' ');
+       if (c == 0) {
+           wwid = strlen(string);
+       } else {
+           wwid = c - string;
+           *c = 0;
+       }
+
+       if ((lwid + wwid) > ML_WID) {
+           fputs("\n#  ", aliases);
+           lwid = 3;
+           fputs(string, aliases);
+       } else {
+           fputs(string, aliases);
+       }
+
+       if (c == (char *)0) break;
+       /* add a space after the word */
+       (void) fputc(' ', aliases);
+       wwid++;
+       lwid += wwid;
+       string += wwid;
+       /* add another if after a period */
+       if (*--c == '.') {
+           (void) fputc(' ', aliases);
+           lwid++;
+       }
+    }
+
+    (void) fputc('\n', aliases);
+}
+
+
 do_people()
 {
     incount = 0;
@@ -618,7 +676,7 @@ unsigned size;
     }
     ret = pool;
     pool += size;
-    pool = (char *)(((unsigned) (pool + 1)) & ~1);
+    pool = (char *)(((unsigned) (pool + 3)) & ~3);
     pool_size -= (pool - ret);
     return(ret);
 }
This page took 0.047085 seconds and 4 git commands to generate.