Re: Fwd: umask и гемморой с ним
At Thu, 11 Mar 2010 17:12:57 +0300,
Artem Chuprina wrote:
> Вот, собственно, и ответ. Я так понимаю, что у gnome commander ноги
> растут все из того же mc.
>
> Впрочем, насколько я представляю себе mc, у него хотя и есть
> противоестественный интеллект, но он обычно настраивается. Копать
> туда. Может, те, кто им пользуется, подскажут более конкретно. Что
> до gnome commander, то если его делали так же, как все обычно делают
> к гному, то может и не настраиваться.
Я там покопался сейчас - по итогам обширной личной переписки с ориг. постером.
Этот интеллект настраивается через vim edit/editcmd.c и никак иначе.
Для существующих файлов эта собака устраивает песни и пляски с mkstemp(),
поэтому ей приходится делать явный chmod(). А во имя экономии умственных усилий
такой же chmod() делается и при записи совершенно нового, с иголочки, файла,
для которого mkstemp ни к чему.
В общем, на всякий случай привожу, ткскзть, скетч патча. Вдруг кто соберётся
доделать по-человечески и отправить куда следует.
diff -Naurd mc-4.7.0.1.old/edit/editcmd.c mc-4.7.0.1/edit/editcmd.c
--- mc-4.7.0.1.old/edit/editcmd.c 2009-12-30 21:58:49.000000000 +0300
+++ mc-4.7.0.1/edit/editcmd.c 2010-03-11 17:40:30.000000000 +0300
@@ -578,7 +578,9 @@
return 0;
}
} else {
- edit->stat1.st_mode |= S_IWUSR;
+ int um = umask(0);
+ edit->stat1.st_mode |= S_IWUSR | S_IWOTH | S_IWGRP &~ um;
+ umask(um);
}
save_lock = edit_lock_file (exp);
} else {
@@ -1888,7 +1890,7 @@
if ((file =
mc_open (filename, O_CREAT | O_WRONLY | O_TRUNC,
- S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH | O_BINARY)) == -1)
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH | O_BINARY)) == -1)
return 0;
if (column_highlighting) {
Reply to: