+#if ENABLE_FEATURE_ADDUSER_TO_GROUP
+ if (argv[1]) {
+ struct group *gr;
+
+ if (option_mask32) {
+ /* -g was there, but "addgroup -g num user group"
+ * is a no-no */
+ bb_show_usage();
+ }
+
+ /* check if group and user exist */
+ xuname2uid(argv[0]); /* unknown user: exit */
+ xgroup2gid(argv[1]); /* unknown group: exit */
+ /* check if user is already in this group */
+ gr = getgrnam(argv[1]);
+ for (; *(gr->gr_mem) != NULL; (gr->gr_mem)++) {
+ if (!strcmp(argv[0], *(gr->gr_mem))) {
+ /* user is already in group: do nothing */
+ return EXIT_SUCCESS;
+ }
+ }
+ 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
+ } else
+#endif /* ENABLE_FEATURE_ADDUSER_TO_GROUP */
+ new_group(argv[0], gid);