[12:04:21] <coopht> тут он
[12:27:06] <yeo> вот нашел сайт, чтобы книжки переводить хором http://notabenoid.com/help/
[12:27:09] <yeo> рискнем?
[12:28:53] <Okasu> yeo: а что ереводить то?
[12:29:08] <Okasu> надо что то новенькое
[12:29:52] <Okasu> и что бы в названии книжки обязательно была циферка 2012
[12:30:08] <Okasu> таких наверно и нет ещё
[12:30:42] <Okasu> надеюсь Барнес скоро разродится
[12:31:23] <subj_rs> хм, как мне эту шляпу импортнуть
          struct passwd {
              char   *pw_name;       /* username */
              char   *pw_passwd;     /* user password */
              uid_t   pw_uid;        /* user ID */
              gid_t   pw_gid;        /* group ID */
              char   *pw_gecos;      /* user information */
              char   *pw_dir;        /* home directory */
              char   *pw_shell;      /* shell program */
          };
?
[12:31:57] <subj_rs> или awk проще заюзать и напрямую passwd прочитать?
[12:36:29] <yeo> "Building Parallel Embedded and Real-Time Applications with Ada" например
[12:38:09] <Okasu> :)
[12:38:27] <Okasu> на днях ей скачал как раз
[12:41:53] <yeo> subj_rs: если надо быстро, попробуй  gcc -fdump-ada-spec /usr/include/pwd.h
[12:42:27] <yeo> получится  pwd_h.ads
[12:44:01] <subj_rs> прикольно, но громоздко получитцо
[12:52:36] <coopht> А так нельзя:
type passwd is record
  PW_Name   : Interafaces.C.char_array;
  PW_Passwd : Interafaces.C.char_array;
  ...
end record;

pragma Convention(C, Passwd);

[12:53:06] <coopht> ?
[12:54:01] <subj_rs> с awk будет проще )
[12:54:10] <yeo> Interafaces.C.char_array нельзя массив без границ указыать компонентом записаи
[12:54:31] <subj_rs> впрочем это далеко не ключевой вопрос
[13:08:36] <vgodunko> coopht: я там конструктор в QtAda поправил
[13:08:39] <vgodunko> Теперь работает
[13:12:53] <vgodunko> landgraf:
type passwd is record
  pw_name : Interfaces.C.Strings.chars_ptr;
  pw_passwd : Interfaces.C.Strings.chars_ptr;
  pw_uid : uid_t;
....
[13:13:14] <vgodunko> -fdump-ada-spec это для извыращенцев высокого уровня.
[13:20:06] <subj_rs> vgodunko: это мне нужно было )
[13:22:12] <vgodunko> Упс...
[13:23:31] <coopht> а точно, есть же chars_ptr
[13:23:37] <coopht> vgodunko: спасибо за QtAda
[17:23:41] <subj_rs> а как в аде клепать аналоги сишных битовых масок, аля
LOG_NDELAY | LOG_PID (значения этих макросов известны) ? тупо + ?
[17:24:44] <vgodunko> Я ничего не говорил про модульные типы
[17:24:54] <vgodunko> и or/and/xor
[17:25:06] <subj_rs> в данном случае это and?
[17:25:59] <vgodunko> Думаю это or
[17:26:30] <subj_rs> мм, значит там не одна палка. по логике наложение идет двух значений
[17:27:01] <landgraf> &?
[17:27:36] <subj_rs> лан фиг с ним. вот это вот сдвиги как перевести?

10 << 3 . я тока поняю надо чтото во чтото возвести )
[17:27:37] <yeo> ну так OR это и есть наложение
[17:27:40] <vgodunko> Разве наложение не одним знаком?
[17:27:52] <vgodunko> Два знака это булевая операция
[17:27:54] <subj_rs> а, ну да
[17:27:56] <vgodunko> Один - побитовая
[17:28:14] <yeo> сдвиги через Interfaces.Shift
[17:28:18] <landgraf> а где два знака?
[17:30:13] <subj_rs> вот так получаетцо
16#08# or 16#01#
[18:55:02] <subj_rs>
use Interfaces.C.Strings;

Msg : String :=  "test";

procedure C_Syslog (Priority : int; Format : chars_ptr; Msg : chars_ptr);
        pragma Import (C, C_Syslog, "syslog");

C_Syslog (6, New_String ("%s"), New_String (Msg));

Прямо в сислог пишет
S T O R A G E _ E R R O R srv01 : srv01 s - i n t m a n . a d b : 1 3 9 srv01 e x p l i c i t srv01 r a i s e
куда копать?

[18:56:08] <subj_rs>
extern void syslog (int __pri, __const char *__fmt, ...)
    __attribute__ ((__format__ (__printf__, 2, 3)));

[19:02:31] <vgodunko> Запускать под gdb
[19:02:49] <vgodunko> SIGSEGV/SIGABRT/SIGILL словили
[19:07:57] <subj_rs>
[pid  7004] socket(PF_FILE, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 2
[pid  7004] connect(2, {sa_family=AF_FILE, path="/dev/log"}, 110) = 0
[pid  7004] connect(2, {sa_family=AF_FILE, path="/dev/log"}, 110) = 0
[pid  7004] sendto(2, 0x6, 11507152, MSG_NOSIGNAL, NULL, 0) = -1 EMSGSIZE (Message too long)
[pid  7004] close(2)                    = 0
[pid  7004] futex(0x7f079f625070, FUTEX_WAKE_PRIVATE, 1) = 0
[pid  7004] --- SIGSEGV (Segmentation fault) @ 0 (0) ---


нтересно