diff --git a/src/gnome-cmd-data.cc b/src/gnome-cmd-data.cc index ecc521d..adde93f 100644 --- a/src/gnome-cmd-data.cc +++ b/src/gnome-cmd-data.cc @@ -1101,6 +1101,9 @@ GnomeCmdData::GnomeCmdData() editor = NULL; differ = NULL; term = NULL; + + umask = ::umask(0); + ::umask(umask); } diff --git a/src/gnome-cmd-data.h b/src/gnome-cmd-data.h index 8837902..8d32ab8 100644 --- a/src/gnome-cmd-data.h +++ b/src/gnome-cmd-data.h @@ -204,6 +204,8 @@ struct GnomeCmdData gint main_win_height; GdkWindowState main_win_state; + mode_t umask; + GnomeCmdData(); void free(); // FIXME: free() -> ~GnomeCmdData() diff --git a/src/gnome-cmd-mkdir-dialog.cc b/src/gnome-cmd-mkdir-dialog.cc index 1f90a29..53a7d42 100644 --- a/src/gnome-cmd-mkdir-dialog.cc +++ b/src/gnome-cmd-mkdir-dialog.cc @@ -105,13 +105,12 @@ static gboolean on_ok (GnomeCmdStringDialog *string_dialog, const gchar **values GnomeVFSResult result = GNOME_VFS_OK; + guint perm = (GNOME_VFS_PERM_USER_ALL | GNOME_VFS_PERM_GROUP_ALL | GNOME_VFS_PERM_OTHER_ALL) & ~gnome_cmd_data.umask | GNOME_VFS_PERM_USER_WRITE | GNOME_VFS_PERM_USER_EXEC; + for (GSList *i = uri_list; i; i = g_slist_next (i)) { GnomeVFSURI *mkdir_uri = (GnomeVFSURI *) i->data; - result = gnome_vfs_make_directory_for_uri (mkdir_uri, - GNOME_VFS_PERM_USER_READ|GNOME_VFS_PERM_USER_WRITE|GNOME_VFS_PERM_USER_EXEC| - GNOME_VFS_PERM_GROUP_READ|GNOME_VFS_PERM_GROUP_EXEC| - GNOME_VFS_PERM_OTHER_READ|GNOME_VFS_PERM_OTHER_EXEC); + result = gnome_vfs_make_directory_for_uri (mkdir_uri, perm); // focus the created directory (if possible) if (result==GNOME_VFS_OK)