🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #78

Błąd w Pinie?

#78
From: Qrczak
Date: Wed, 15 Oct 1997 00:04
59 lines
4031 bytes
[Followup-To: pl.comp.os.linux]

Zapragnąłem skompilować Pina, żeby móc wstawiać dowolne From na newsach
(można na to pozwolić podczas kompilacji). Mam wersję 3.95, tę z RH4.2.
Niby go skompilowałem (pierwszy raz w życiu, nie licząc jądra), ale po
uruchomieniu przez kogoś innego niż root wypisywał ostrzeżenie: 
[Error creating /var/spool/mail/qrczak.lock.876859056.4837.qrnik.knm.org.pl: Permission denied]
Poza tym chyba działał dobrze.

Denerwowało mnie to. Znalazłem w konfiguracji opcję
quell-lock-failure-warnings, która miała blokować to ostrzeżenie, ale, co
ciekawe, w oryginalnym Pinie była wyłączona, a ostrzeżenia i tak nie było,
a w nowym nawet jej włączenie nie pomagało i ostrzeżenie wciąż się
pojawiało. Sprawdziłem stracem, że stary Pine próbował w ogóle blokować
plikiem /var/spool/mail/qrczak.lock; oba stracy miał sporo innych różnic,
więc okazuje się, że wersja skompilowana różni się trochę od tej w
źródłach. Do tej pory myślałem, że to jest ta sama wersja... Chyba że
jakoś różnią się w opcjach kompilacji, ale nie zgadnę, w jaki sposób był
kompilowany oryginalny Pine. 

Przeglądałem źródła Pina (pomagając sobie grepem, ale np. nie umiem
jeszcze szukać po podkatalogach). W końcu znalazłem miejsce, w którym
powstawał ten komunikat (było kilka podobnych, ale tylko jedno było
prawdziwe). W pliku pine3.95/imap/ANSI/c-client/bezerk.c, od linji 1158: 
      sprintf (tmp,"Error creating %s: %s",hitch,strerror (errno));
      switch (errno) {          /* what happened? */
      case EEXIST:              /* file already exists? */
        break;                  /* oops, just try again */
      case EACCES:              /* protection failure */
                                /* try again if file exists(?) */
        if (!stat (hitch,&sb)) break;
                                /* punt silently if paranoid site */
        if (mail_parameters (NIL,GET_LOCKEACCESERROR,NIL))
      default:                  /* some other error */
          mm_log (tmp,WARN);    /* this is probably not good */
        *lock = '\0';           /* give up on lock file */
        break;
      }
Funkcja mm_log pokazuje ów komunikat. Pytanie to programujących w C:
Dlaczego kiedy zamieniłem ze sobą miejscami wiersze:
        if (mail_parameters (NIL,GET_LOCKEACCESERROR,NIL))
      default:                  /* some other error */
to WSZYSTKO ZACZĘŁO DZIAŁAĆ JAK TRZEBA? Nie wiem, czy w C można robić
takie if(...) default: ...;

Zrobiłem, co do mnie należało (efekt można obejrzeć w nagłówkach postu -
mam prawdziwy, działający adres we From). Teraz Wasza kolej. Czy to błąd w
Pinie? Jak to powinno wyglądać poprawnie? Po mojej poprawce znowu jest
niewrażliwy na opcję quell-lock-failure-warnings, ale w ten lepszy sposób
- nie pisze ostrzeżenia... O co w tym wszystkim chodzi? Co to znaczy
/* this is probably not good */? Nie rozumiem, dlaczego taka zmiana kodu
powoduje akurat taki efekt - powinien chyba zacząć reagować na q-l-f-w,
nie? Do GET_LOCKEACCESERROR w innym miejscu jest przypisywana wartość
opcji q-l-f-w. Co ja takiego pokręciłem? Ciekaw jestem wyjaśnień... 

               zdez'orjentowany QRCZAK
    __("<             Marcin Kowalczyk
    \__/             qrczak@knm.org.pl
     ^^      http://kki.net.pl/qrczak/
Technical Details
Message-ID: <Pine.LNX.3.95.971015013025.11962A-100000@qrnik.knm.org.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!cyfronet!news.icm.edu.pl!qrnik.knm.org.pl!qrnik.knm.org.pl!qrczak

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!cyfronet!news.icm.edu.pl!qrnik.knm.org.pl!qrnik.knm.org.pl!qrczak
From: Qrczak <qrczak@knm.org.pl>
Newsgroups: pl.comp.os.linux,pl.comp.lang.c
Subject: Błąd w Pinie?
Followup-To: pl.comp.os.linux
Date: Wed, 15 Oct 1997 02:04:20 +0200
Organization: Qrnik
Lines: 60
Message-ID: <Pine.LNX.3.95.971015013025.11962A-100000@qrnik.knm.org.pl>
Reply-To: Qrczak <qrczak@knm.org.pl>
NNTP-Posting-Host: ppp-cst186.warszawa.tpnet.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit