Beagle my logs? Nie dzisiaj.
Zabrałem się za dopisanie logowanie w formacie GAIMa
do EKG2. Zaczęło się z górki, bo ktoś przerobił (i słusznie) obsługę log_formats
na korzystanie z variable_map()
. W kilka minut zdołałem chyba skumać
o co chodzi i dodać nowy format "gaim".
I tu pierwszy zonk - logs_handler
jest popsuty, pozwala logować tylko
w jednym formacie. A pierwotnie można było wybrać dowolną ich ilość.
To jest do naprawienia, ale nie dzisiaj.
No to dalej. Przy generowaniu ścieżki trzeba trochę oszukać - mieć ,,w nosie''
to co chce użytkownik i logować do ~/.gaim/logs/(protokół)/(userid)/(rozmowcaid)/data.godzina.txt
.
Nic trudnego, w końcu rok temu tworząć plugin logów
wbudowałem w niego właśnie
taką uniwersalność.
No to problem numer dwa: funkcja formatująca nie rozeznaje się na protokołach. Teoretycznie
wystarczy dodać nową formatkę i wycinać z nazwy sesji wszystko do pierwszego dwukropka.
Praktycznie działa to tylko dla irc
, bo pozostałe sesje mają inne
prefiksu (jabber - jid, gadu-gadu - gg). Tymczasowo więc zrobił parę if
ów.
String formatujący zrobiony, logs_prepare_path()
i ... dupa.
Nie dość, że formatka %F
nie tworzy poprawnie daty, to jeszcze nie ma
godzin, minut, sekund. Widget Tango Foxtrot?
Funkcja rozwijająca szablon ścieżki logowania w ogóle nie obsługuje godzin, minut, sekund!
Ba, ona nawet nie ma pojęcia o strftime()
. Jestem pod wrażeniem jak
mi się to udało aż tak spieprzyć. I do tego hijacknąć sobie np. %S (w ramach
uzupełniania nazwą sesji, a nie bieżącą sekundą).
No więc kolejna rzecz do zrobienia - przerobić logs_prepare_path()
na
modłę timestampu - czyli formatki dla strftime()
poprzedzać dwoma %
,
i przepuszczać przez rzeczone strftime()
po rozwinięciu wszystkich EKGowych
specyfików.
Ale dzisiaj już nie mam sił. Pół dnia nauki o Sieciach Telekomunikacyjnych z Integracją Usług na piątkowy, przyspieszony egzamin nie pozostawiło mi za dużo ochoty na wysilanie umysłu. Do tego tak dawno nie pisałem w C, że aż mi trudno wrócić do tego. Przez chwilę walczyłem z myślą, czy by nie dopisać parsowania logów EKG2 do Beagle'a. O wiele łatwiej i szybciej zrobiłym to w C# niż w C w EKG2. Ale nie tędy droga.
No i jeszcze jedna sprawa: GAIM loguje do plików reprezentujących konwersacje. W EKG2 poszczególne wiadomości są zupełnie ze sobą nie związane, więc każdy msg powodowałby stworzenie nowego pliku z oddzielną rozmową. Jako rozwiązanie widzę przypisanie do okna informacji o pliku w jakim następuje logowanie. I byćmoże tworzenie tych plików w handlerze, przy stworzeniu okna. Tu jednak wychyla łeb kolejny problem - wiadomości wysłane przez /msg, które pojawiają się w głównym oknie - nie mają jeszcze przypisanego okna z konwersacją. Jak zapamiętać, gdzie je zalogowano?
Pewnie skończenie tego zajmie mi tyle, co w ogóle zrobienie plugina logów. Zacząłem w okolicach maja zeszłego roku, w miarę skończyłem w sierpniu.