Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Ну вообще лыжи не едут!

Пытаюсь сделать функцию безопасной перезаписи. Ничего подходящего из сисвызовов не увидел (чтобы после того, как сделаешь unlink, вернуть файлу предыдущее имя), поэтому решил сделать файлу link на новое имя, unlink на старое, а если запись в старое имя выдаст ошибку, обратно перелинковать.
И не тут-то было! Пишу:
bool FITS_rewrite(FITS *fits){
    FNAME();
    char *nm = tmpnam(NULL);
    if(!nm){WARN("tmpnam()"); return FALSE;}
    char *fnm = strrchr(nm, '/');
    if(!fnm){WARN("tmpnam()"); return FALSE;}
    ++fnm;
    DBG("make double: %s -> %s", fits->filename, fnm);
    if(link(fits->filename, fnm)){
        WARN("link()");
        return FALSE;
    }
    return TRUE;
}

(все остальное допишу дальше, сначала хочу проверить работу link), и у меня создается символическая ссылка вместо жесткой!
Вот же ядрен батон!!! Как это?
UPD: точно лыжи не едут, спать надо ложиться! Я пытался сделать линк на симлинк! Понятно, что появляется новый симлинк. Все ОК. Надо лечиться.
А потом уже разбираться, как мне сделать аналог команды linkat без дескрипторов...
Upd2. А ведь с перезаписью содержимого файла, открытого по симлинку, не все так просто. Буду искать варианты. Как-то я раньше никогда этим не заморачивался...
Tags: c
Subscribe

  • M$ teams…

    Начал с сегодняшнего дня студентам ЮФУ удаленно лекции читать. У них все завязано на различные корпорации зла. И базовая работа - через teams. ОК,…

  • Почему systemd — дерьмо

    Уже давно на эту статейку натыкался, но все забывал в "закладки" добавить. Вот, добавляю: "systemd — отстой". Советую эту статейку почитать…

  • Что-то китайцы вообще веб-морду али поломали!

    Если раньше проблема была только в назойливом "квазирусском" интерфейсе, который постоянно приходилось отключать, то сейчас еще больше багов…

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 2 comments