From 8f623b36d661bfcf18b30a088177f6a5131bd1d9 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Thu, 14 Feb 2008 06:23:47 +0100 Subject: [PATCH] Added 64-bit types to the library. --- include/doldaconnect/uilib.h | 3 +++ include/doldaconnect/uimisc.h | 2 +- lib/Makefile.am | 2 +- lib/makecmds | 1 + lib/uicmds | 10 +++++----- lib/uilib.c | 7 +++++++ lib/uimisc.c | 16 ++++++---------- 7 files changed, 24 insertions(+), 17 deletions(-) diff --git a/include/doldaconnect/uilib.h b/include/doldaconnect/uilib.h index dc726da..0a1204e 100644 --- a/include/doldaconnect/uilib.h +++ b/include/doldaconnect/uilib.h @@ -5,6 +5,8 @@ #define DC_LATEST 2 +typedef long long dc_lnum_t; + struct dc_response { struct dc_response *next, *prev; @@ -32,6 +34,7 @@ struct dc_intresp union { int num; + dc_lnum_t lnum; wchar_t *str; double flnum; } val; diff --git a/include/doldaconnect/uimisc.h b/include/doldaconnect/uimisc.h index f47dbd6..707c9b6 100644 --- a/include/doldaconnect/uimisc.h +++ b/include/doldaconnect/uimisc.h @@ -93,7 +93,7 @@ struct dc_transfer int dir, state; wchar_t *peerid, *peernick; wchar_t *path; - int size, curpos; + dc_lnum_t size, curpos; int found; int error; time_t errortime; diff --git a/lib/Makefile.am b/lib/Makefile.am index a1f677d..4847b2d 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -7,7 +7,7 @@ lib_LTLIBRARIES = libdcui.la libdcui_la_SOURCES = uilib.c uimisc.c libdcui_la_LIBADD = @KRB5_LIBS@ $(top_srcdir)/common/libcommon.a libdcui_la_LDFLAGS = -version-info 2:0:1 -libdcui_la_CPPFLAGS = @KRB5_CFLAGS@ +libdcui_la_CPPFLAGS = @KRB5_CFLAGS@ -D_GNU_SOURCE BUILT_SOURCES = initcmds.h diff --git a/lib/makecmds b/lib/makecmds index 750b43d..c6f63ee 100755 --- a/lib/makecmds +++ b/lib/makecmds @@ -5,6 +5,7 @@ "s" => "RESP_STR", "d" => "RESP_DSC", "i" => "RESP_INT", + "I" => "RESP_LNUM", "f" => "RESP_FLOAT" ); diff --git a/lib/uicmds b/lib/uicmds index 1ad9b19..b223bf4 100644 --- a/lib/uicmds +++ b/lib/uicmds @@ -1,5 +1,5 @@ :lssr -200 s s s i i i f s +200 s s s I i i f s 201 514 :lssrch @@ -66,7 +66,7 @@ 510 511 :lstrans -200 i i i s s s i i s +200 i i i s s s I I s 201 502 :cancel @@ -139,15 +139,15 @@ 610 i i s s ; Transfer create 611 i i ; Transfer state change 612 i s ; Transfer nick change -613 i i ; Transfer size change +613 i I ; Transfer size change 614 i i ; Transfer error update -615 i i ; Transfer progress +615 i I ; Transfer progress 616 i s ; Transfer path change 617 i s ; Transfer destroy 618 i s ; Transfer hash update 620 i i 621 i -622 i s s s i i i f s +622 i s s s I i i f s 630 i s s 631 i s 632 i s s ; More data follows, but cannot be handled by dc_interpret diff --git a/lib/uilib.c b/lib/uilib.c index 26429f8..acc7594 100644 --- a/lib/uilib.c +++ b/lib/uilib.c @@ -58,6 +58,7 @@ #define RESP_STR 1 #define RESP_INT 2 #define RESP_FLOAT 3 +#define RESP_LNUM 4 struct respclass { @@ -1372,6 +1373,12 @@ struct dc_intresp *dc_interpret(struct dc_response *resp) iresp->argv[iresp->argc].type = cls->wordt[i]; iresp->argc++; break; + case RESP_LNUM: + sizebuf(&(iresp->argv), &args, iresp->argc + 1, sizeof(*(iresp->argv)), 1); + iresp->argv[iresp->argc].val.lnum = wcstoll(resp->rlines[resp->curline].argv[i + 1], NULL, 0); + iresp->argv[iresp->argc].type = cls->wordt[i]; + iresp->argc++; + break; } } resp->curline++; diff --git a/lib/uimisc.c b/lib/uimisc.c index 6a30ffa..92d1074 100644 --- a/lib/uimisc.c +++ b/lib/uimisc.c @@ -19,10 +19,6 @@ #include #include -/* I'm very unsure about this, but for now it defines wcstoll (which - * should be defined anyway) and doesn't break anything... let's keep - * two eyes wide open, though. */ -#define __USE_ISOC99 #include #include #include @@ -969,8 +965,8 @@ static int gettrlistcallback(struct dc_response *resp) } transfer->dir = ires->argv[1].val.num; transfer->state = ires->argv[2].val.num; - transfer->size = ires->argv[6].val.num; - transfer->curpos = ires->argv[7].val.num; + transfer->size = ires->argv[6].val.lnum; + transfer->curpos = ires->argv[7].val.lnum; if(transfer->hash != NULL) { free(transfer->hash); @@ -986,8 +982,8 @@ static int gettrlistcallback(struct dc_response *resp) transfer->peerid = swcsdup(ires->argv[3].val.str); transfer->peernick = swcsdup(ires->argv[4].val.str); transfer->path = swcsdup(ires->argv[5].val.str); - transfer->size = ires->argv[6].val.num; - transfer->curpos = ires->argv[7].val.num; + transfer->size = ires->argv[6].val.lnum; + transfer->curpos = ires->argv[7].val.lnum; if(wcslen(ires->argv[8].val.str) > 0) transfer->hash = swcsdup(ires->argv[8].val.str); transfer->found = 1; @@ -1249,7 +1245,7 @@ void dc_uimisc_handlenotify(struct dc_response *resp) break; case 613: if((transfer = dc_findtransfer(ires->argv[0].val.num)) != NULL) - transfer->size = ires->argv[1].val.num; + transfer->size = ires->argv[1].val.lnum; break; case 614: if((transfer = dc_findtransfer(ires->argv[0].val.num)) != NULL) @@ -1260,7 +1256,7 @@ void dc_uimisc_handlenotify(struct dc_response *resp) break; case 615: if((transfer = dc_findtransfer(ires->argv[0].val.num)) != NULL) - transfer->curpos = ires->argv[1].val.num; + transfer->curpos = ires->argv[1].val.lnum; break; case 616: if((transfer = dc_findtransfer(ires->argv[0].val.num)) != NULL) -- 2.11.0