• ветки

    From Sergey Anohin@2:5034/10.1 to All on Sun Jan 23 23:04:58 2022
    Hello!

    Ветка от Semen Panevin выглядит опережающей

    http://icelan.ru/svn/qicoxe/trunk/

    Ох там мержить ппц, там помимо косметики есть отличия в memcpy VS memmove, так выборочно посравнивал.
    Взгляните только на различия хотя бы src %)

    #diff -qr /root/qico /root/trunk
    Only in /root/qico: .cirrus.yml
    Only in /root/qico: .git
    Only in /root/qico: .gitignore
    Only in /root/trunk: .svn
    Only in /root/qico: .travis.yml
    Only in /root/qico: CMakeLists.txt
    Files /root/qico/ChangeLog and /root/trunk/ChangeLog differ
    Files /root/qico/Changes and /root/trunk/Changes differ
    Files /root/qico/FAQ and /root/trunk/FAQ differ
    Only in /root/qico: LICENSE
    Files /root/qico/Makefile.am and /root/trunk/Makefile.am differ
    Files /root/qico/README and /root/trunk/README differ
    Only in /root/qico: README.ru
    Only in /root/qico: TODO
    Files /root/qico/autogen.sh and /root/trunk/autogen.sh differ
    Only in /root/qico: cmake
    Only in /root/trunk: compile
    Only in /root/qico: config.cmake.h
    Only in /root/qico: configure.ac
    Only in /root/trunk: configure.in
    Files /root/qico/cvs_com and /root/trunk/cvs_com differ
    Files /root/qico/debian/changelog and /root/trunk/debian/changelog differ
    Files /root/qico/debian/compat and /root/trunk/debian/compat differ
    Files /root/qico/debian/control and /root/trunk/debian/control differ
    Files /root/qico/debian/copyright and /root/trunk/debian/copyright differ
    Files /root/qico/debian/qico-common.init and /root/trunk/debian/qico-common.init differ
    Only in /root/trunk/debian: qico-qcc.dirs
    Only in /root/trunk/debian: qico-qcc.install
    Files /root/qico/debian/qico.install and /root/trunk/debian/qico.install differ Files /root/qico/debian/rules and /root/trunk/debian/rules differ
    Only in /root/qico/debian: source
    Files /root/qico/freebsd/Makefile and /root/trunk/freebsd/Makefile differ
    Files /root/qico/freebsd/pkg-descr and /root/trunk/freebsd/pkg-descr differ Only in /root/trunk: gentoo
    Files /root/qico/lib/Makefile.am and /root/trunk/lib/Makefile.am differ
    Files /root/qico/lib/dlmalloc.c and /root/trunk/lib/dlmalloc.c differ
    Files /root/qico/man/Makefile.am and /root/trunk/man/Makefile.am differ
    Files /root/qico/man/qcc.8 and /root/trunk/man/qcc.8 differ
    Files /root/qico/man/qctl.8 and /root/trunk/man/qctl.8 differ
    Files /root/qico/man/qico.8 and /root/trunk/man/qico.8 differ
    Files /root/qico/qico.conf.sample and /root/trunk/qico.conf.sample differ
    Files /root/qico/qico.passwd.sample and /root/trunk/qico.passwd.sample differ Files /root/qico/qico.spec and /root/trunk/qico.spec differ
    Only in /root/qico: qico.spec.in
    Only in /root/qico/src: .gitignore
    Only in /root/qico/src: CMakeLists.txt
    Files /root/qico/src/Makefile.am and /root/trunk/src/Makefile.am differ
    Only in /root/qico/src: anylist.c
    Only in /root/qico/src: anylist.h
    Files /root/qico/src/binkp.c and /root/trunk/src/binkp.c differ
    Files /root/qico/src/binkp.h and /root/trunk/src/binkp.h differ
    Files /root/qico/src/call.c and /root/trunk/src/call.c differ
    Files /root/qico/src/charset.h and /root/trunk/src/charset.h differ
    Files /root/qico/src/clserv.c and /root/trunk/src/clserv.c differ
    Files /root/qico/src/clserv.h and /root/trunk/src/clserv.h differ
    Files /root/qico/src/config.c and /root/trunk/src/config.c differ
    Files /root/qico/src/crc.c and /root/trunk/src/crc.c differ
    Files /root/qico/src/crc.h and /root/trunk/src/crc.h differ
    Files /root/qico/src/cvsdate.h and /root/trunk/src/cvsdate.h differ
    Files /root/qico/src/daemon.c and /root/trunk/src/daemon.c differ
    Files /root/qico/src/defs.h and /root/trunk/src/defs.h differ
    Only in /root/qico/src: des.c
    Only in /root/qico/src: des.h
    Files /root/qico/src/emsi.c and /root/trunk/src/emsi.c differ
    Only in /root/qico/src: flagexp.c
    Only in /root/qico/src: flagexp.h
    Files /root/qico/src/flagexp.y and /root/trunk/src/flagexp.y differ
    Only in /root/qico/src: flaglex.c
    Files /root/qico/src/flaglex.l and /root/trunk/src/flaglex.l differ
    Files /root/qico/src/freq.c and /root/trunk/src/freq.c differ
    Files /root/qico/src/ftn.c and /root/trunk/src/ftn.c differ
    Files /root/qico/src/ftn.h and /root/trunk/src/ftn.h differ
    Files /root/qico/src/getsid.c and /root/trunk/src/getsid.c differ
    Files /root/qico/src/globals.c and /root/trunk/src/globals.c differ
    Files /root/qico/src/globals.h and /root/trunk/src/globals.h differ
    Files /root/qico/src/have.h and /root/trunk/src/have.h differ
    Files /root/qico/src/headers.h and /root/trunk/src/headers.h differ
    Files /root/qico/src/hydra.c and /root/trunk/src/hydra.c differ
    Files /root/qico/src/hydra.h and /root/trunk/src/hydra.h differ
    Files /root/qico/src/janus.c and /root/trunk/src/janus.c differ
    Files /root/qico/src/janus.h and /root/trunk/src/janus.h differ
    Files /root/qico/src/log.c and /root/trunk/src/log.c differ
    Files /root/qico/src/ls_zglue.c and /root/trunk/src/ls_zglue.c differ
    Files /root/qico/src/ls_zmodem.c and /root/trunk/src/ls_zmodem.c differ
    Files /root/qico/src/ls_zmodem.h and /root/trunk/src/ls_zmodem.h differ
    Files /root/qico/src/ls_zreceive.c and /root/trunk/src/ls_zreceive.c differ Files /root/qico/src/ls_zsend.c and /root/trunk/src/ls_zsend.c differ
    Files /root/qico/src/mailer.h and /root/trunk/src/mailer.h differ
    Files /root/qico/src/main.c and /root/trunk/src/main.c differ
    Files /root/qico/src/malloc.c and /root/trunk/src/malloc.c differ
    Files /root/qico/src/md5q.c and /root/trunk/src/md5q.c differ
    Files /root/qico/src/md5q.h and /root/trunk/src/md5q.h differ
    Files /root/qico/src/memcmp.c and /root/trunk/src/memcmp.c differ
    Files /root/qico/src/modem.c and /root/trunk/src/modem.c differ
    Files /root/qico/src/modem.h and /root/trunk/src/modem.h differ
    Files /root/qico/src/nodelist.c and /root/trunk/src/nodelist.c differ
    Files /root/qico/src/nodelist.h and /root/trunk/src/nodelist.h differ
    Files /root/qico/src/outbound.c and /root/trunk/src/outbound.c differ
    Files /root/qico/src/perl.c and /root/trunk/src/perl.c differ
    Files /root/qico/src/protfm.c and /root/trunk/src/protfm.c differ
    Files /root/qico/src/qcc.c and /root/trunk/src/qcc.c differ
    Files /root/qico/src/qcconst.h and /root/trunk/src/qcconst.h differ
    Only in /root/qico/src: qconf.c
    Only in /root/qico/src: qconf.h
    Files /root/qico/src/qconf.x and /root/trunk/src/qconf.x differ
    Files /root/qico/src/qctl.c and /root/trunk/src/qctl.c differ
    Files /root/qico/src/qipc.c and /root/trunk/src/qipc.c differ
    Files /root/qico/src/qipc.h and /root/trunk/src/qipc.h differ
    Only in /root/qico/src: qipc_common.c
    Only in /root/qico/src: qipc_server.c
    Only in /root/qico/src: qipcng.h
    Files /root/qico/src/qslib.c and /root/trunk/src/qslib.c differ
    Files /root/qico/src/qslib.h and /root/trunk/src/qslib.h differ
    Files /root/qico/src/queue.c and /root/trunk/src/queue.c differ
    Files /root/qico/src/replace.h and /root/trunk/src/replace.h differ
    Files /root/qico/src/session.c and /root/trunk/src/session.c differ
    Files /root/qico/src/slists.c and /root/trunk/src/slists.c differ
    Files /root/qico/src/slists.h and /root/trunk/src/slists.h differ
    Files /root/qico/src/strcasestr.c and /root/trunk/src/strcasestr.c differ
    Files /root/qico/src/strcspn.c and /root/trunk/src/strcspn.c differ
    Files /root/qico/src/strsep.c and /root/trunk/src/strsep.c differ
    Files /root/qico/src/tcp.c and /root/trunk/src/tcp.c differ
    Files /root/qico/src/tcp.h and /root/trunk/src/tcp.h differ
    Only in /root/qico/src: tcpp.c
    Files /root/qico/src/timer.h and /root/trunk/src/timer.h differ
    Files /root/qico/src/tools.c and /root/trunk/src/tools.c differ
    Files /root/qico/src/tools.h and /root/trunk/src/tools.h differ
    Files /root/qico/src/tty.c and /root/trunk/src/tty.c differ
    Files /root/qico/src/tty.h and /root/trunk/src/tty.h differ
    Files /root/qico/src/types.h and /root/trunk/src/types.h differ
    Only in /root/qico/src: vartree.h
    Files /root/qico/src/x2c.awk and /root/trunk/src/x2c.awk differ
    Only in /root/trunk: stamp-h.in
    Only in /root/qico/stuff: .gitignore
    Files /root/qico/stuff/Makefile.am and /root/trunk/stuff/Makefile.am differ Files /root/qico/stuff/ftn and /root/trunk/stuff/ftn differ
    Files /root/qico/stuff/koi8r_866.cp and /root/trunk/stuff/koi8r_866.cp differ Files /root/qico/stuff/onchat and /root/trunk/stuff/onchat differ
    Files /root/qico/stuff/synctime and /root/trunk/stuff/synctime differ
    Files /root/qico/stuff/test.pl and /root/trunk/stuff/test.pl differ
    Files /root/qico/stuff/tossing and /root/trunk/stuff/tossing differ
    Only in /root/qico: tests

    Там конечно много косметических отличий типа (если я не ошибаюсь и это просто косметика)
    void setproctitle(char *str) void setproctitle(char *str)
    { {
    char *p; char *p;
    if(!cmdstr) { | if(!cmdstr)return;
    return; | for(p=cmdstr;p<cmdstrend&&*str;p++,str++)*p=*str;
    } | *p++=0;while(p<cmdstrend)*p++=' ';
    for(p=cmdstr; p<cmdstrend&&*str; p++,str++) { <
    *p=*str; <
    } <
    *p++=0; <
    while(p<cmdstrend) { <
    *p++=' '; <
    } <
    } }

    о и такое:

    void modem_done(void) void modem_done(void)
    { {
    TIO tio; | TIO tio;

    DEBUG(('M',1,"modem_done")); | DEBUG(('M',1,"modem_done"));

    signal( SIGHUP, SIG_IGN ); | signal( SIGHUP, SIG_IGN );
    signal( SIGPIPE, SIG_IGN ); | signal( SIGPIPE, SIG_IGN );
    tty_gothup = FALSE; | tty_gothup = FALSE;
    >
    > memmove( &tio, &tty_stio, sizeof( TIO ));

    memcpy( &tio, &tty_stio, sizeof( TIO )); | tio_raw_mode( &tio );
    > tio_set_flow_control( tty_fd, &tio, FLOW_NONE );
    > tio_local_mode( &tio, TRUE );

    tio_raw_mode( &tio ); | if ( tio_set( tty_fd, &tio ) == ERROR ) {
    tio_set_flow_control( tty_fd, &tio, FLOW_NONE ); | DEBUG(('M',2,"modem_done: tio_set failed: %s"
    tio_local_mode( &tio, TRUE ); | }

    if ( tio_set( tty_fd, &tio ) == ERROR ) { | modem_hangup();
    DEBUG(('M',2,"modem_done: tio_set failed: %s", strerr | if ( dial_rc == MC_OK ) {
    } | modem_stat_collect();
    | modem_reset();
    modem_hangup(); | }
    if ( dial_rc == MC_OK ) { | tty_close();
    modem_stat_collect(); <
    modem_reset(); <
    } <
    tty_close(); <
    } }


    В общем можно попробовать смержить только надо решить как кошернее слева или справа, подозреваю справа? :)

    2Zhenja Kaliuta кстати trunk билдится вообще без костылей у меня
    autoreconf -if
    ./configure
    make



    С наилучшими пожеланиями, Sergey Anohin.

    --- wfido
    * Origin: https://5034.ru/wfido (2:5034/10.1)
  • From Zhenja Kaliuta@2:4500/1.59 to Sergey Anohin on Mon Jan 24 11:41:03 2022
    Hi, Sergey!

    On Sun, 23 Jan 2022 23:04:58 +0200 Sergey Anohin writes:

    Ветка от Semen Panevin выглядит опережающей

    http://icelan.ru/svn/qicoxe/trunk/

    Последний стаф от Митрия https://mirror.datacenter.by/qicoxe/qico-0.57.1xe-20150602.tar.bz2

    Если вдруг

    --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
    * Origin: Somewhere in the North (2:4500/1.59)
  • From Sergey Anohin@2:5034/10.1 to Zhenja Kaliuta on Mon Jan 24 16:02:35 2022
    Hello, Zhenja!

    Последний стаф от Митрия https://mirror.datacenter.by/qicoxe/qico-0.57.1xe-20150602.tar.bz2
    Если вдруг

    Похоже конечно на транк если например сравнивать http://icelan.ru/svn/qicoxe/trunk/src/binkp.c
    и из архива такой же. Подскажешь по кошерности стиля кода и memcpy vs memmove?


    С наилучшими пожеланиями, Sergey Anohin.

    --- wfido
    * Origin: https://5034.ru/wfido (2:5034/10.1)
  • From Zhenja Kaliuta@2:4500/1.59 to Sergey Anohin on Mon Jan 24 15:13:01 2022
    Hi, Sergey!

    On Mon, 24 Jan 2022 16:02:35 +0200 Sergey Anohin writes:

    Последний стаф от Митрия
    https://mirror.datacenter.by/qicoxe/qico-0.57.1xe-20150602.tar.bz2
    Если вдруг

    Похоже конечно на транк если например сравнивать http://icelan.ru/svn/qicoxe/trunk/src/binkp.c
    и из архива такой же. Подскажешь по кошерности стиля кода

    Что именно?

    и memcpy vs memmove?

    memmove умеет копировать пересекающиеся области.

    --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
    * Origin: Somewhere in the North (2:4500/1.59)
  • From Sergey Anohin@2:5034/10.1 to Zhenja Kaliuta on Mon Jan 24 16:18:20 2022
    Hello, Zhenja!

    Что именно?

    Где моднее слева или справа?

    void setproctitle(char *str) void setproctitle(char *str)
    { {
    char *p; char *p;
    if(!cmdstr) { | if(!cmdstr)return;
    return; | for(p=cmdstr;p<cmdstrend&&*str;p++,str++)*p=*str;
    } | *p++=0;while(p<cmdstrend)*p++=' ';
    for(p=cmdstr; p<cmdstrend&&*str; p++,str++) { <
    *p=*str; <
    } <
    *p++=0; <
    while(p<cmdstrend) { <
    *p++=' '; <
    } <
    } }

    и memcpy vs memmove?
    memmove умеет копировать пересекающиеся области.

    Какой вариант прогрессивнее? :)
    такое:

    void modem_done(void) void modem_done(void)
    { {
    TIO tio; | TIO tio;

    DEBUG(('M',1,"modem_done")); | DEBUG(('M',1,"modem_done"));

    signal( SIGHUP, SIG_IGN ); | signal( SIGHUP, SIG_IGN );
    signal( SIGPIPE, SIG_IGN ); | signal( SIGPIPE, SIG_IGN );
    tty_gothup = FALSE; | tty_gothup = FALSE;
    >
    > memmove( &tio, &tty_stio, sizeof( TIO ));

    memcpy( &tio, &tty_stio, sizeof( TIO )); | tio_raw_mode( &tio );
    > tio_set_flow_control( tty_fd, &tio, FLOW_NONE );
    > tio_local_mode( &tio, TRUE );

    tio_raw_mode( &tio ); | if ( tio_set( tty_fd, &tio ) == ERROR ) {
    tio_set_flow_control( tty_fd, &tio, FLOW_NONE ); | DEBUG(('M',2,"modem_done: tio_set failed: %s"
    tio_local_mode( &tio, TRUE ); | }

    if ( tio_set( tty_fd, &tio ) == ERROR ) { | modem_hangup();
    DEBUG(('M',2,"modem_done: tio_set failed: %s", strerr | if ( dial_rc == MC_OK ) {
    } | modem_stat_collect();
    | modem_reset();
    modem_hangup(); | }
    if ( dial_rc == MC_OK ) { | tty_close();
    modem_stat_collect(); <
    modem_reset(); <
    } <
    tty_close(); <
    } }


    С наилучшими пожеланиями, Sergey Anohin.

    --- wfido
    * Origin: https://5034.ru/wfido (2:5034/10.1)
  • From Zhenja Kaliuta@2:4500/1.59 to Sergey Anohin on Mon Jan 24 15:42:54 2022
    Hi, Sergey!

    On Mon, 24 Jan 2022 16:18:20 +0200 Sergey Anohin writes:

    Что именно?

    Где моднее слева или справа?

    Оба так себе, но слева лучше.

    void setproctitle(char *str) void setproctitle(char *str)
    { {
    char *p; char *p;
    if(!cmdstr) { | if(!cmdstr)return;
    return; | for(p=cmdstr;p<cmdstrend&&*str;p++,str++)*p=*str;
    } | *p++=0;while(p<cmdstrend)*p++=' ';
    for(p=cmdstr; p<cmdstrend&&*str; p++,str++) { <
    *p=*str; <
    } <
    *p++=0; <
    while(p<cmdstrend) { <
    *p++=' '; <
    } <
    } }

    и memcpy vs memmove?
    memmove умеет копировать пересекающиеся области.

    Какой вариант прогрессивнее? :)
    такое:


    void modem_done(void) void modem_done(void)
    { {
    TIO tio; | TIO tio;

    DEBUG(('M',1,"modem_done")); | DEBUG(('M',1,"modem_done"));

    signal( SIGHUP, SIG_IGN ); | signal( SIGHUP, SIG_IGN );
    signal( SIGPIPE, SIG_IGN ); | signal( SIGPIPE, SIG_IGN );
    tty_gothup = FALSE; | tty_gothup = FALSE;

    memmove( &tio, &tty_stio, sizeof( TIO ));

    tio = tty_stio;

    е нужно тут mem*. Между memcpy/memmove последний нужен, если области пересекаются. Если нет -- memcpy может выдать более оптимизированный код, хотя это тут не критично.


    memcpy( &tio, &tty_stio, sizeof( TIO )); | tio_raw_mode( &tio );
    tio_set_flow_control( tty_fd, &tio, FLOW_NONE );
    tio_local_mode( &tio, TRUE );

    tio_raw_mode( &tio ); | if ( tio_set( tty_fd, &tio ) == ERROR ) {
    tio_set_flow_control( tty_fd, &tio, FLOW_NONE ); | DEBUG(('M',2,"modem_done: tio_set failed: %s"
    tio_local_mode( &tio, TRUE ); | }

    if ( tio_set( tty_fd, &tio ) == ERROR ) { | modem_hangup();
    DEBUG(('M',2,"modem_done: tio_set failed: %s", strerr | if ( dial_rc == MC_OK ) {
    } | modem_stat_collect();
    | modem_reset();
    modem_hangup(); | }
    if ( dial_rc == MC_OK ) { | tty_close();
    modem_stat_collect(); <
    modem_reset(); <
    } <
    tty_close(); <
    } }


    С наилучшими пожеланиями, Sergey Anohin.

    --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
    * Origin: Somewhere in the North (2:4500/1.59)
  • From Sergey Anohin@2:5034/10.1 to Zhenja Kaliuta on Mon Jan 24 18:17:38 2022
    Hello, Zhenja!

    memmove( &tio, &tty_stio, sizeof( TIO ));
    tio = tty_stio;
    е нужно тут mem*. Между memcpy/memmove последний нужен, если области пересекаются. Если нет -- memcpy может выдать более оптимизированный код, хотя это тут не критично.

    https://wfido.ru/m/RU.FIDONET.DIGEST/2:50/15+547abc52


    С наилучшими пожеланиями, Sergey Anohin.

    --- wfido
    * Origin: https://5034.ru/wfido (2:5034/10.1)
  • From Zhenja Kaliuta@2:4500/1.59 to Sergey Anohin on Mon Jan 24 17:45:31 2022
    Hi, Sergey!

    On Mon, 24 Jan 2022 18:17:38 +0200 Sergey Anohin writes:


    memmove( &tio, &tty_stio, sizeof( TIO ));
    tio = tty_stio;
    е нужно тут mem*. Между memcpy/memmove последний нужен, если
    области пересекаются. Если нет -- memcpy может выдать более
    оптимизированный код, хотя это тут не критично.

    https://wfido.ru/m/RU.FIDONET.DIGEST/2:50/15+547abc52

    Там тоже написано, про перекрывающиеся буфера. Слепая замена memcpy на memmove везде -- это карго-культ какой-то.

    --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
    * Origin: Somewhere in the North (2:4500/1.59)
  • From Sergey Anohin@2:5034/10.1 to Zhenja Kaliuta on Mon Jan 24 19:23:55 2022
    Hello, Zhenja!

    https://wfido.ru/m/RU.FIDONET.DIGEST/2:50/15+547abc52
    Там тоже написано, про перекрывающиеся буфера. Слепая замена memcpy на memmove везде -- это карго-культ какой-то.

    Про "везде" не проверял, когда буду мержить, придется по месту смотреть :(

    С наилучшими пожеланиями, Sergey Anohin.

    --- wfido
    * Origin: https://5034.ru/wfido (2:5034/10.1)
  • From Nil A@2:5015/46 to Sergey Anohin on Mon Jan 24 19:59:52 2022
    Hello, Sergey!

    Monday January 24 2022 19:23, from Sergey Anohin -> Zhenja Kaliuta:

    https://wfido.ru/m/RU.FIDONET.DIGEST/2:50/15+547abc52
    Там тоже написано, про перекрывающиеся буфера. Слепая замена
    memcpy на memmove везде -- это карго-культ какой-то.
    Про "везде" не проверял, когда буду мержить, придется по месту
    смотреть :(

    ASAN билд выявляет такие ошибки. Я голдеда с санитайзерами гонял, он мне сходу наловил много таких мест, вообще удивляюсь, как оно вообще работает.

    Best Regards, Nil
    --- GoldED+/LNX 1.1.5
    * Origin: Linux 2.6.32-042stab145.3 (2:5015/46)