]> git.tuebingen.mpg.de Git - adu.git/blobdiff - adu.c
Fix prototype of com_create().
[adu.git] / adu.c
diff --git a/adu.c b/adu.c
index 3eec0b4d67c20509c4de586b5d4bf16d17fb362c..07248e99a592e6466cb7f42abeb9d45fbeab905f 100644 (file)
--- a/adu.c
+++ b/adu.c
@@ -53,8 +53,6 @@ struct osl_table *dir_table = NULL;
  */
 struct uid_range *admissible_uids;
 
-/** Evaluates to 1 if x < y, to -1 if x > y and to 0 if x == y. */
-#define NUM_COMPARE(x, y) ((int)((x) < (y)) - (int)((x) > (y)))
 
 /**
  * Compare the size of two directories
@@ -168,61 +166,6 @@ static struct osl_column_description user_table_cols[] = {
        },
 };
 
-static int check_uid_arg(const char *arg, uint32_t *uid)
-{
-       const uint32_t max = ~0U;
-       /*
-        * we need an 64-bit int for string -> uid conversion because strtoll()
-        * returns a signed value.
-        */
-       int64_t val;
-       int ret = atoi64(arg, &val);
-
-       if (ret < 0)
-               return ret;
-       if (val < 0 || val > max)
-               return -ERRNO_TO_ERROR(EINVAL);
-       *uid = val;
-       return 1;
-}
-
-static int parse_uid_range(const char *orig_arg, struct uid_range *ur)
-{
-       int ret;
-       char *arg = adu_strdup(orig_arg), *p = strchr(arg, '-');
-
-       if (!p || p == arg) { /* -42 or 42 */
-               ret = check_uid_arg(p? p + 1 : arg, &ur->high);
-               if (ret < 0)
-                       goto out;
-               ur->low = p? 0 : ur->high;
-               ret = 1;
-               goto out;
-       }
-       /* 42- or 42-4711 */
-       *p = '\0';
-       p++;
-       ret = check_uid_arg(arg, &ur->low);
-       if (ret < 0)
-               goto out;
-       ur->high = ~0U;
-       if (*p) { /* 42-4711 */
-               ret = check_uid_arg(p, &ur->high);
-               if (ret < 0)
-                       goto out;
-       }
-       if (ur->low > ur->high)
-               ret = -ERRNO_TO_ERROR(EINVAL);
-out:
-       if (ret < 0)
-               ERROR_LOG("bad uid option: %s\n", orig_arg);
-       else
-               INFO_LOG("admissible uid range: %u - %u\n", ur->low,
-                       ur->high);
-       free(arg);
-       return ret;
-}
-
 /**
  * The log function.
  *
@@ -311,7 +254,7 @@ int for_each_admissible_user(int (*func)(struct user_info *, void *),
        return 1;
 }
 
-#define PRIME1 0x811c9dc5
+#define PRIME1 0xb11924e1
 #define PRIME2 0x01000193
 
 void create_hash_table(unsigned bits)
@@ -475,6 +418,12 @@ char *get_uid_list_name(void)
        return make_message("%s/uid_list", conf.database_dir_arg);
 }
 
+void sort_hash_table(int (*comp)(const void *, const void *))
+{
+       qsort(uid_hash_table, uid_hash_table_size, sizeof(struct user_info),
+               comp);
+}
+
 int open_dir_table(int create)
 {
        dir_table_desc.dir = adu_strdup(conf.database_dir_arg);
@@ -546,8 +495,10 @@ int main(int argc, char **argv)
        ret = -E_SYNTAX;
        if (conf.select_given)
                ret = com_select();
-       else
+       else if (conf.create_given)
                ret = com_create();
+       else
+               ret = com_interactive();
        if (ret < 0)
                goto out;
 out: