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.

Comments


Comments powered by Disqus