Move user and user ID related functions to separate files.
[adu.git] / create.c
index 022129bcb01a7e74d6427d2e60ba7af6f1c7e539..d08da1c026909de78ccd4386d22d9545de139c80 100644 (file)
--- a/create.c
+++ b/create.c
 #include "fd.h"
 #include "string.h"
 #include "error.h"
-#include "portable_io.h"
+#include "user.h"
 
 /* Id of the device containing the base dir. */
 static dev_t device_id;
 
-static int write_uid(struct user_info *ui, void *data)
-{
-       char **p = data;
-
-       write_u32(*p, ui->uid);
-       *p += sizeof(uint32_t);
-       return 1;
-}
-
-static int write_uid_list(void)
-{
-       char *buf, *p, *filename;
-       size_t size = num_uids * sizeof(uint32_t);
-       int ret;
-
-       if (!num_uids)
-               return 0;
-       buf = p = adu_malloc(size);
-       ret = for_each_admissible_user(write_uid, &p);
-       if (ret < 0)
-               goto out;
-       filename = get_uid_list_name();
-       ret = adu_write_file(filename, buf, size);
-       free(filename);
-out:
-       free(buf);
-       return ret;
-}
-
 static int add_directory(char *dirname, uint64_t *dir_num, uint64_t *parent_dir_num,
                uint64_t *dir_size, uint64_t *dir_files)
 {
@@ -201,7 +172,7 @@ int com_create(void)
        ret = scan_dir(conf.base_dir_arg, &zero);
        if (ret < 0)
                goto out;
-       ret = write_uid_list();
+       ret = write_uid_file();
 out:
        close_all_tables();
        return ret;