--- mysql/common.c	Wed Feb  2 22:59:21 2000
+++ src-0.3-local/common.c	Thu Feb 17 21:20:24 2000
@@ -17,6 +17,7 @@
 #include <unistd.h>
 #include <ctype.h>
 #include <string.h>
+#include <grp.h>
 #include "mysql-admutils.h"
 
 char *program_name;
@@ -115,6 +116,75 @@
     return 1; /* OK */
 
   return 0; /* not owner if we get as far as this */
+}
+
+/**
+ * Decides if the user is member of a group. The Unix group can't contain any
+ * '_'. i.e 'fidi_s' won't be accepted.
+ */
+int 
+member(char *gr) {
+  char *username;
+
+  char *group;
+  struct group *g;
+
+  struct passwd *p;
+  char *foo;
+
+  /*  size_t i = 0; */
+  
+  /* Get username */
+  p = getpwuid(getuid());
+  if (!p) {
+    fprintf(stderr, "Failed to look up your UNIX username.");
+    exit(1);
+  }
+  username = p->pw_name;
+ 
+  /* Copy string, but cut at '_' */
+  group = strdup(gr);
+  if (group == NULL) {
+    fprintf(stderr, "Couldn't allocate memory. Terminating."); 
+    exit(1);
+  }
+
+  foo = strchr(group, '_');
+  if (foo) {
+#if DEBUG
+    printf("gr = %s, group = %s, foo = %s\n", gr, group, foo);
+#endif
+    *foo = '\0'; 
+  }
+  
+  /* Get group */
+  g = getgrnam(group);
+  if (g == NULL) {
+    fprintf(stderr, "No such group: %s\n", group);
+    exit(1);
+  }
+
+  /* Check if user is member of group */
+  while(*g->gr_mem != NULL) {
+    char * member = *g->gr_mem; 
+#if DEBUG
+    printf("Medlem: %s\n", *g->gr_mem);
+#endif
+
+    if (strcmp(member,username) == 0) {
+#if DEBUG      
+      printf("You have access to '%s'\n", gr);
+#endif
+      return 1;              /* OK */
+    } else
+      *g->gr_mem++;
+  } 
+#if DEBUG
+  printf("You have no access to '%s'\n", gr);
+#endif
+
+  return 0;
+
 }