Added 64-bit types to the library.
authorFredrik Tolf <fredrik@dolda2000.com>
Thu, 14 Feb 2008 05:23:47 +0000 (06:23 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Thu, 14 Feb 2008 05:23:47 +0000 (06:23 +0100)
include/doldaconnect/uilib.h
include/doldaconnect/uimisc.h
lib/Makefile.am
lib/makecmds
lib/uicmds
lib/uilib.c
lib/uimisc.c

index dc726da..0a1204e 100644 (file)
@@ -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;
index f47dbd6..707c9b6 100644 (file)
@@ -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;
index a1f677d..4847b2d 100644 (file)
@@ -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
 
index 750b43d..c6f63ee 100755 (executable)
@@ -5,6 +5,7 @@
      "s" => "RESP_STR",
      "d" => "RESP_DSC",
      "i" => "RESP_INT",
+     "I" => "RESP_LNUM",
      "f" => "RESP_FLOAT"
      );
 
index 1ad9b19..b223bf4 100644 (file)
@@ -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
 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
index 26429f8..acc7594 100644 (file)
@@ -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++;
index 6a30ffa..92d1074 100644 (file)
 
 #include <unistd.h>
 #include <stdlib.h>
-/* 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 <wchar.h>
 #include <wctype.h>
 #include <pwd.h>
@@ -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)