id: unsigned long is excessive for option bitmask
[oweals/busybox.git] / loginutils / addgroup.c
index b213074a65c731211f2c2397632e9796fca39ee8..89414d7381fbfadedb165efe5fc61fae49c7b20f 100644 (file)
@@ -56,7 +56,7 @@ static void new_group(char *group, gid_t gid)
        /* add entry to group */
        file = xfopen(bb_path_group_file, "a");
        /* group:passwd:gid:userlist */
-       fprintf(file, "%s:x:%d:\n", group, gr.gr_gid);
+       fprintf(file, "%s:x:%u:\n", group, (unsigned)gr.gr_gid);
        if (ENABLE_FEATURE_CLEAN_UP)
                fclose(file);
 #if ENABLE_FEATURE_SHADOWPASSWDS
@@ -72,7 +72,7 @@ static void new_group(char *group, gid_t gid)
 #if ENABLE_FEATURE_ADDUSER_TO_GROUP
 static void add_user_to_group(char **args,
                const char *path,
-               FILE *(*fopen_func)(const char *fileName, const char *mode))
+               FILE* FAST_FUNC (*fopen_func)(const char *fileName, const char *mode))
 {
        char *line;
        int len = strlen(args[1]);
@@ -83,7 +83,7 @@ static void add_user_to_group(char **args,
 
        if (!group_file) return;
 
-       while ((line = xmalloc_getline(group_file))) {
+       while ((line = xmalloc_fgetline(group_file)) != NULL) {
                /* Find the group */
                if (!strncmp(line, args[1], len)
                 && line[len] == ':'
@@ -122,8 +122,8 @@ static void add_user_to_group(char **args,
  * If called with two non-option arguments, addgroup
  * will add an existing user to an existing group.
  */
-int addgroup_main(int argc, char **argv);
-int addgroup_main(int argc, char **argv)
+int addgroup_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int addgroup_main(int argc UNUSED_PARAM, char **argv)
 {
        char *group;
        gid_t gid = 0;
@@ -144,10 +144,10 @@ int addgroup_main(int argc, char **argv)
        }
        /* move past the commandline options */
        argv += optind;
-       argc -= optind;
+       //argc -= optind;
 
 #if ENABLE_FEATURE_ADDUSER_TO_GROUP
-       if (argc == 2) {
+       if (argv[1]) {
                struct group *gr;
 
                if (option_mask32) {
@@ -170,11 +170,14 @@ int addgroup_main(int argc, char **argv)
                add_user_to_group(argv, bb_path_group_file, xfopen);
 #if ENABLE_FEATURE_SHADOWPASSWDS
                add_user_to_group(argv, bb_path_gshadow_file, fopen_or_warn);
-#endif /* ENABLE_FEATURE_SHADOWPASSWDS */
+#endif
        } else
 #endif /* ENABLE_FEATURE_ADDUSER_TO_GROUP */
+       {
+               die_if_bad_username(argv[0]);
                new_group(argv[0], gid);
 
+       }
        /* Reached only on success */
        return EXIT_SUCCESS;
 }