struct _userinfo info = {0,};
gchar *old_name = NULL;
gint change = 0;
+ gint update_homedir = 0;
DBG ("");
change++;
}
- if (change == 0) {
+ if (!g_file_test(self->priv->pw->pw_dir, G_FILE_TEST_EXISTS)) {
+ DBG("home directory is not exists : %s ", self->priv->pw->pw_dir);
+ if (!_create_home_dir(self, error)) {
+ gum_lock_pwdf_unlock();
+ return FALSE;
+ }
+ update_homedir++;
+ }
+
+ if ((change == 0) && (update_homedir == 0)) {
gum_lock_pwdf_unlock ();
GUM_RETURN_WITH_ERROR (GUM_ERROR_USER_NO_CHANGES,
"No changes registered", error, FALSE);
}
g_free (old_name);
+ if (update_homedir != 0) {
+ const gchar *scrip_dir = USERADD_SCRIPT_DIR;
+ gchar *ut = gum_string_utils_get_string(self->priv->pw->pw_gecos, ",",
+ GECOS_FIELD_USERTYPE);
+ gum_utils_run_user_scripts(scrip_dir, self->priv->pw->pw_name,
+ self->priv->pw->pw_uid, self->priv->pw->pw_gid,
+ self->priv->pw->pw_dir, ut);
+ g_free(ut);
+ }
+
gum_lock_pwdf_unlock ();
return TRUE;
}