#
# Patch applies to qmailadmin 1.0.12 sources.
# James Raftery <james@now.ie> 12 Dec. 2002 / 15 Apr. 2003
#
# This patch improves on the 1.0.6 patch by moving text into the
# language files and only changing a flag if explicitly asked to. The
# 1.0.6 patch unset the flag if the relevant form element wasn't on
# (meaning the form element couldn't be left out with the intention of
# just leaving the flags unmodified---the form element had to be present
# and on else the flag was unset).
#

diff -ruN qmailadmin-1.0.12.orig/html/de qmailadmin-1.0.12/html/de
--- qmailadmin-1.0.12.orig/html/de	Thu Feb 27 20:38:46 2003
+++ qmailadmin-1.0.12/html/de	Tue Apr 15 19:20:51 2003
@@ -291,3 +291,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/en qmailadmin-1.0.12/html/en
--- qmailadmin-1.0.12.orig/html/en	Thu Feb 27 20:38:52 2003
+++ qmailadmin-1.0.12/html/en	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/es qmailadmin-1.0.12/html/es
--- qmailadmin-1.0.12.orig/html/es	Thu Feb 27 20:38:54 2003
+++ qmailadmin-1.0.12/html/es	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/fr qmailadmin-1.0.12/html/fr
--- qmailadmin-1.0.12.orig/html/fr	Thu Feb 27 20:38:56 2003
+++ qmailadmin-1.0.12/html/fr	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/hu qmailadmin-1.0.12/html/hu
--- qmailadmin-1.0.12.orig/html/hu	Thu Feb 27 20:38:59 2003
+++ qmailadmin-1.0.12/html/hu	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/it qmailadmin-1.0.12/html/it
--- qmailadmin-1.0.12.orig/html/it	Thu Feb 27 20:39:03 2003
+++ qmailadmin-1.0.12/html/it	Tue Apr 15 19:20:51 2003
@@ -296,3 +296,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/ja qmailadmin-1.0.12/html/ja
--- qmailadmin-1.0.12.orig/html/ja	Thu Feb 27 20:39:06 2003
+++ qmailadmin-1.0.12/html/ja	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/mod_user_noquota.html qmailadmin-1.0.12/html/mod_user_noquota.html
--- qmailadmin-1.0.12.orig/html/mod_user_noquota.html	Wed Feb 26 18:32:04 2003
+++ qmailadmin-1.0.12/html/mod_user_noquota.html	Tue Apr 15 19:25:27 2003
@@ -124,6 +124,36 @@
                                                                                                         <td align="left">##X214&nbsp;</td>
                                                                                                         <td colspan="3" align="left"><textarea name="vmessage" rows="10" cols="50">##i6</textarea></td>
                                                                                                 </tr>
+
+                <tr>
+                <td>##X296</td>
+
+                <td colspan="3" align="left">
+                ##X299: 
+                <input type="radio" name="zeroflag" value="on" ##J1> ##X297
+                &nbsp;
+                <input type="radio" name="zeroflag" value="off" ##J2> ##X298
+
+                &nbsp;&nbsp;
+
+                ##X300:
+                <input type="radio" name="oneflag" value="on" ##J3> ##X297
+                &nbsp;
+                <input type="radio" name="oneflag" value="off" ##J4> ##X298
+                
+                <br>##X301:
+                <input type="radio" name="twoflag" value="on" ##J5> ##X297
+                &nbsp;
+                <input type="radio" name="twoflag" value="off" ##J6> ##X298
+
+                &nbsp;&nbsp;
+
+                ##X302:
+                <input type="radio" name="threeflag" value="on" ##J7> ##X297
+                &nbsp;
+                <input type="radio" name="threeflag" value="off" ##J8> ##X298
+                </td>
+                </tr>
                                                                                                                 </table>
 
 <script type="text/javascript">
diff -ruN qmailadmin-1.0.12.orig/html/mod_user_quota.html qmailadmin-1.0.12/html/mod_user_quota.html
--- qmailadmin-1.0.12.orig/html/mod_user_quota.html	Wed Feb 26 18:32:04 2003
+++ qmailadmin-1.0.12/html/mod_user_quota.html	Tue Apr 15 19:25:30 2003
@@ -129,6 +129,36 @@
                                                                                                         <td align="left">##X214&nbsp;</td>
                                                                                                         <td colspan="3" align="left"><textarea name="vmessage" rows="10" cols="50">##i6</textarea></td>
                                                                                                 </tr>
+
+                <tr>
+                <td>##X296</td>
+
+                <td colspan="3" align="left">
+                ##X299:
+                <input type="radio" name="zeroflag" value="on" ##J1> ##X297
+                &nbsp;
+                <input type="radio" name="zeroflag" value="off" ##J2> ##X298
+
+                &nbsp;&nbsp;
+
+                ##X300:
+                <input type="radio" name="oneflag" value="on" ##J3> ##X297
+                &nbsp;
+                <input type="radio" name="oneflag" value="off" ##J4> ##X298
+
+                <br>##X301:
+                <input type="radio" name="twoflag" value="on" ##J5> ##X297
+                &nbsp;
+                <input type="radio" name="twoflag" value="off" ##J6> ##X298
+
+                &nbsp;&nbsp;
+
+                ##X302:
+                <input type="radio" name="threeflag" value="on" ##J7> ##X297
+                &nbsp;
+                <input type="radio" name="threeflag" value="off" ##J8> ##X298
+                </td>
+                </tr>
                                                                                                                 </table>
 
 <script type="text/javascript">
diff -ruN qmailadmin-1.0.12.orig/html/no qmailadmin-1.0.12/html/no
--- qmailadmin-1.0.12.orig/html/no	Thu Feb 27 20:39:08 2003
+++ qmailadmin-1.0.12/html/no	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/pl qmailadmin-1.0.12/html/pl
--- qmailadmin-1.0.12.orig/html/pl	Thu Feb 27 20:39:10 2003
+++ qmailadmin-1.0.12/html/pl	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/pt-BR qmailadmin-1.0.12/html/pt-BR
--- qmailadmin-1.0.12.orig/html/pt-BR	Wed Feb 26 18:32:04 2003
+++ qmailadmin-1.0.12/html/pt-BR	Tue Apr 15 19:20:51 2003
@@ -259,3 +259,10 @@
 258 Guia do Administrador
 259 Indice de Ajuda
 260 Roteamento
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/ru qmailadmin-1.0.12/html/ru
--- qmailadmin-1.0.12.orig/html/ru	Thu Feb 27 20:39:13 2003
+++ qmailadmin-1.0.12/html/ru	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/sv qmailadmin-1.0.12/html/sv
--- qmailadmin-1.0.12.orig/html/sv	Thu Feb 27 20:39:15 2003
+++ qmailadmin-1.0.12/html/sv	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/html/tr qmailadmin-1.0.12/html/tr
--- qmailadmin-1.0.12.orig/html/tr	Thu Feb 27 20:39:17 2003
+++ qmailadmin-1.0.12/html/tr	Tue Apr 15 19:20:51 2003
@@ -294,3 +294,10 @@
 293 open to anyone
 294 limited to subscribers
 295 limited to moderators
+296 Mailbox flags
+297 on
+298 off
+299 Flag0
+300 Flag1
+301 Flag2
+302 Flag3
diff -ruN qmailadmin-1.0.12.orig/template.c qmailadmin-1.0.12/template.c
--- qmailadmin-1.0.12.orig/template.c	Tue Feb 25 18:30:30 2003
+++ qmailadmin-1.0.12/template.c	Tue Apr 15 19:07:40 2003
@@ -34,6 +34,7 @@
 
 static char dchar[4];
 void check_user_forward_vacation(char newchar);
+void check_mailbox_flags(char newchar);
 
 static char NTmpBuf[500];
 
@@ -402,6 +403,12 @@
             fprintf(actout,"%s", StatusMessage);
             break;
 
+          /* show mailbox flag status */
+          /* James Raftery <james@now.ie> 12 Dec. 2002 */
+          case 'J':
+            check_mailbox_flags(fgetc(fs));
+            break;
+
           /* show the catchall name */
           case 's':
             get_catchall();
@@ -507,6 +514,71 @@
   vclose();
 
   return 0;
+}
+
+/* Display status of mailbox flags */
+/* James Raftery <james@now.ie> 12 Dec. 2002 / 15 Apr. 2003 */
+void check_mailbox_flags(char newchar)
+{
+ static struct vqpasswd *vpw = NULL;
+
+  if (vpw==NULL) vpw = vauth_getpw(ActionUser, Domain); 
+
+  switch (newchar) {
+
+    /* 1: "checked" if V_USER0 is set */
+    /* 2: "checked" if V_USER0 is unset */
+    case '1':
+      if (vpw->pw_gid & V_USER0)
+        printf("checked");
+      break;
+
+    case '2':
+      if (!(vpw->pw_gid & V_USER0))
+        printf("checked");
+      break;
+
+    /* 3: "checked" if V_USER1 is set */
+    /* 4: "checked" if V_USER1 is unset */
+    case '3':
+      if (vpw->pw_gid & V_USER1)
+        printf("checked");
+      break;
+
+    case '4':
+      if (!(vpw->pw_gid & V_USER1))
+        printf("checked");
+      break;
+
+    /* 5: "checked" if V_USER2 is set */
+    /* 6: "checked" if V_USER2 is unset */
+    case '5':
+      if (vpw->pw_gid & V_USER2)
+        printf("checked");
+      break;
+
+    case '6':
+      if (!(vpw->pw_gid & V_USER2))
+        printf("checked");
+      break;
+
+    /* 7: "checked" if V_USER3 is set */
+    /* 8: "checked" if V_USER3 is unset */
+    case '7':
+      if (vpw->pw_gid & V_USER3)
+        printf("checked");
+      break;
+
+    case '8':
+      if (!(vpw->pw_gid & V_USER3))
+        printf("checked");
+      break;
+
+    default:
+      break;
+  }
+
+  return;
 }
 
 void check_user_forward_vacation(char newchar)
diff -ruN qmailadmin-1.0.12.orig/user.c qmailadmin-1.0.12/user.c
--- qmailadmin-1.0.12.orig/user.c	Fri Feb 28 00:19:08 2003
+++ qmailadmin-1.0.12/user.c	Tue Apr 15 17:53:03 2003
@@ -850,6 +850,49 @@
     vauth_setpw(vpw, Domain);
   }
 
+  /* check for the V_USERx flags and set accordingly */
+  /* James Raftery <james@now.ie>, 12 Dec. 2002 */
+  GetValue(TmpCGI,box, "zeroflag=", MAX_BUFF);
+  if ( strcmp(box,"on") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain); 
+    vpw->pw_gid |= V_USER0;
+    vauth_setpw(vpw, Domain);
+  } else if ( strcmp(box,"off") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain); 
+    vpw->pw_gid &= ~V_USER0;
+    vauth_setpw(vpw, Domain);
+  }
+  GetValue(TmpCGI,box, "oneflag=", MAX_BUFF);
+  if ( strcmp(box,"on") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain); 
+    vpw->pw_gid |= V_USER1;
+    vauth_setpw(vpw, Domain);
+  } else if ( strcmp(box,"off") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain); 
+    vpw->pw_gid &= ~V_USER1;
+    vauth_setpw(vpw, Domain);
+  }
+  GetValue(TmpCGI,box, "twoflag=", MAX_BUFF);
+  if ( strcmp(box,"on") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain); 
+    vpw->pw_gid |= V_USER2;
+    vauth_setpw(vpw, Domain);
+  } else if ( strcmp(box,"off") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain); 
+    vpw->pw_gid &= ~V_USER2;
+    vauth_setpw(vpw, Domain);
+  }
+  GetValue(TmpCGI,box, "threeflag=", MAX_BUFF);
+  if ( strcmp(box,"on") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain); 
+    vpw->pw_gid |= V_USER3;
+    vauth_setpw(vpw, Domain);
+  } else if ( strcmp(box,"off") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain); 
+    vpw->pw_gid &= ~V_USER3;
+    vauth_setpw(vpw, Domain);
+  }
+
   /* get the value of the cforward radio button */
   GetValue(TmpCGI,box, "cforward=", MAX_BUFF);
 

