Kurt,
        I applied these and zelously went through and made sure everything
in those files is type-safe. Now the result isn't releaseable on 32-bit
platforms, it compiles fine, but it's causing segmentation faults after a
few minutes of operation. :-/ 

        I will keep investigating as I have time... I think my wife wants to
watch a movie I've seen a dozen times tonight so I may have a chance to hack
a bit more then. :-)

        If you're interested, the results are here... I'm interested in
seeing if they at least compile in amd64 now:

        http://www.crackerjack.net/mod_bt/debian/sid/

        I'll let you know again when I have something I think will actually
work.

        Cheers,
                Tyler
        

Kurt Roeckx <[EMAIL PROTECTED]> wrote:
> On Tue, Jul 11, 2006 at 11:23:23AM -0700, Tyler MacDonald wrote:
> > Thanks Kurt,
> >     I've been working through your patch and correcting the code in
> > dev... If you're willing, I would like to send you my results when I'm done
> > to test again.
> 
> Sure, just send me the diff or some url or something.
> 
> > > Then I got:
> > > Tracker.xs: In function 'XS_Net__BitTorrent__LibBT__Tracker_Infohash':
> > > Tracker.xs:576: warning: passing argument 3 of 'Perl_sv_2pv_flags' from 
> > > incompatible pointer type
> > > Tracker.xs: In function 
> > > 'XS_Net__BitTorrent__LibBT__Tracker__Infohash_Peer':
> > > Tracker.xs:1047: warning: passing argument 3 of 'Perl_sv_2pv_flags' from 
> > > incompatible pointer type
> 
> So, I've fixed those an others too.  I've attached the complete
> diff.
> 
> 
> Kurt
> 

> --- src/libbtutil/util/bt_nice_size.c.old     2006-07-10 23:40:58.000000000 
> +0200
> +++ src/libbtutil/util/bt_nice_size.c 2006-07-10 23:44:04.000000000 +0200
> @@ -7,6 +7,7 @@
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <sys/types.h>
> +#include <inttypes.h>
>  
>  #define SZSTR        64
>  
> @@ -31,7 +32,7 @@
>   }
>   else
>   {
> -  snprintf(szstr, SZSTR, "%llub", size);
> +  snprintf(szstr, SZSTR, "%" PRIu64 "b", size);
>   }
>   
>   rv = apr_pstrdup(p, szstr);
> --- src/libbtutil/types/bt_metainfo.c.old     2006-07-10 23:45:09.000000000 
> +0200
> +++ src/libbtutil/types/bt_metainfo.c 2006-07-10 23:53:42.000000000 +0200
> @@ -40,7 +40,7 @@
>      
>      if(sinfo.st_size > BT_MAX_METAINFO_SIZE) {
>          fprintf(
> -            stderr, "%s: file to large (%llu bytes > %u bytes)",
> +            stderr, "%s: file to large (%zu bytes > %u bytes)",
>              path, sinfo.st_size, BT_MAX_METAINFO_SIZE
>          );
>          return NULL;
> @@ -60,7 +60,7 @@
>      
>      if((rv = apr_file_read(file, buf, &len)) != APR_SUCCESS) {
>          fprintf(
> -            stderr, "Failed to read %llu bytes from %s: %s\n",
> +            stderr, "Failed to read %zu bytes from %s: %s\n",
>              sinfo.st_size, path,
>              apr_strerror(rv, errorstr, BT_SHORT_STRING)
>          );
> @@ -70,7 +70,7 @@
>      if(len != sinfo.st_size) {
>          fprintf(
>              stderr,
> -            "%s: expected %llu bytes, but got %"SF"!\n", path, 
> sinfo.st_size, len
> +            "%s: expected %zu bytes, but got %"SF"!\n", path, sinfo.st_size, 
> len
>          );
>          return NULL;
>      }
> --- src/libbttracker/tracker/btt_tracker_alloc.c.old  2006-07-10 
> 23:54:53.000000000 +0200
> +++ src/libbttracker/tracker/btt_tracker_alloc.c      2006-07-10 
> 23:55:52.000000000 +0200
> @@ -122,13 +122,13 @@
>        rv = NULL;
>       } else {
>        if((ret = apr_shm_create(&rv, size, shfile, p)) != APR_SUCCESS) {
> -       fprintf(stderr, "apr_shm_create(&rv, %d, \"%s\", pool) failed: %s\n", 
> size, shfile, apr_strerror(ret, btt_error_msg, sizeof(btt_error_msg)));
> +       fprintf(stderr, "apr_shm_create(&rv, %zd, \"%s\", pool) failed: 
> %s\n", size, shfile, apr_strerror(ret, btt_error_msg, sizeof(btt_error_msg)));
>         fflush(stderr);
>         rv = NULL;
>        }
>       }
>      } else {
> -     fprintf(stderr, "apr_shm_create(&rv, %d, \"%s\", pool) failed: %s\n", 
> size, shfile, apr_strerror(ret, btt_error_msg, sizeof(btt_error_msg)));
> +     fprintf(stderr, "apr_shm_create(&rv, %zd, \"%s\", pool) failed: %s\n", 
> size, shfile, apr_strerror(ret, btt_error_msg, sizeof(btt_error_msg)));
>       fflush(stderr);
>       rv = NULL;
>      }
> @@ -189,7 +189,7 @@
>                 return NULL;
>              }
>          } else {
> -            fprintf(stderr, "bt_tracker_alloc(): Failed to allocate %d 
> bytes!\n", sizeof(btt_tracker));
> +            fprintf(stderr, "bt_tracker_alloc(): Failed to allocate %zd 
> bytes!\n", sizeof(btt_tracker));
>              fflush(stderr);
>              return NULL;
>          }
> --- src/libbttracker/types/btt_infohash.c.old 2006-07-10 23:56:48.000000000 
> +0200
> +++ src/libbttracker/types/btt_infohash.c     2006-07-11 00:02:16.000000000 
> +0200
> @@ -18,6 +18,7 @@
>  /* libc */
>  #include <time.h>
>  #include <stdio.h>
> +#include <inttypes.h>
>  /* other libs */
>  #include <apr.h>
>  #include <apr_pools.h>
> @@ -79,7 +80,7 @@
>    "<TR><TH>Infohash:</TH><TD>%s</TH></TR>\n"
>    "<TR><TH>Filename:</TH><TD>%s</TD></TR>\n"
>    "<TR><TH>File Size:</TH><TD>%s</TD></TR>\n"
> -  "<TR><TH>Announce Hits:</TH><TD>%llu</TD></TR>\n"
> +  "<TR><TH>Announce Hits:</TH><TD>%" PRIu64 "</TD></TR>\n"
>    "<TR><TH>Max Uploaded/Downloaded:</TH><TD>%s/%s</TD></TR>\n"
>    "<TR><TH>Min/Max Left:</TH><TD>%s/%s</TD></TR>\n"
>    "<TR><TH>Peers/Seeds/Shields:</TH><TD>%u/%u/%u</TD></TR>\n"
> @@ -121,7 +122,7 @@
>    "Infohash:            %s\n"
>    "Filename:            %s\n"
>    "File Size:           %s\n"
> -  "Announce Hits:       %llu\n"
> +  "Announce Hits:       %" PRIu64 "\n"
>    "Max Uploaded:        %s\n"
>    "Mac Downloaded:      %s\n"
>    "Min/Max Left:        %s/%s\n"
> @@ -171,7 +172,7 @@
>   char* rv = apr_psprintf
>   (
>    p,
> -  
> "20:....................d8:completei%ue10:downloadedi%ue10:incompletei%ue4:name%u:%s4:sizei%lluee",
> +  
> "20:....................d8:completei%ue10:downloadedi%ue10:incompletei%ue4:name%zu:%s4:sizei%"
>  PRIu64 "ee",
>    complete, infohash->completes, infohash->peers - infohash->seeds, 
> strlen(infohash->filename),
>    infohash->filename, infohash->filesize
>   );
> --- src/libbttracker/types/btt_peer.c.old     2006-07-11 00:03:22.000000000 
> +0200
> +++ src/libbttracker/types/btt_peer.c 2006-07-11 00:04:54.000000000 +0200
> @@ -122,7 +122,7 @@
>                  fprintf(
>                      stderr,
>                      "bt_peer_req2struct(): got an invalid infohash "
> -                    "of length %i\n", fp.value_len
> +                    "of length %zi\n", fp.value_len
>                  );
>                  fflush(stderr);
>                  return 0;
> @@ -135,7 +135,7 @@
>                  fprintf(
>                      stderr,
>                      "bt_peer_req2struct(): got an invalid peerid "
> -                    "of length %i\n", fp.value_len
> +                    "of length %zi\n", fp.value_len
>                  );
>                  fflush(stderr);
>                  return 0;
> @@ -175,7 +175,7 @@
>                  fprintf(
>                      stderr,
>                      "bt_peer_req2struct(): Got an invalid event "
> -                    "of length %i\n", fp.value_len
> +                    "of length %zi\n", fp.value_len
>                  );
>                  fflush(stderr);
>                  return 0;
> @@ -256,7 +256,7 @@
>      int len = 0;
>  
>      rv = apr_psprintf(
> -        p, "d2:ip%u:%s4:porti%uee", strlen(ip), ip,
> +        p, "d2:ip%zu:%s4:porti%uee", strlen(ip), ip,
>          ntohs(peer->address.sin_port)
>      );
>      len = strlen(rv);
> @@ -268,11 +268,11 @@
>  int btt_peer2bencode(apr_pool_t* p, btt_peer* peer, char **result) {
>      char *rv = NULL;
>      char *ip = apr_pstrdup(p, inet_ntoa(peer->address.sin_addr));
> -    int iplen = strlen(apr_psprintf(p, "%u%s", strlen(ip), ip));
> +    int iplen = strlen(apr_psprintf(p, "%zu%s", strlen(ip), ip));
>      int len = 0;
>  
>      rv = apr_psprintf(
> -        p, "d2:ip%u:%s7:peer id20:xxxxxxxxxxxxxxxxxxxx4:porti%uee",
> +        p, "d2:ip%zu:%s7:peer id20:xxxxxxxxxxxxxxxxxxxx4:porti%uee",
>          strlen(ip), ip, ntohs(peer->address.sin_port)
>      );
>      
> --- src/libbttracker/types/btt_tracker.c.old  2006-07-11 00:05:53.000000000 
> +0200
> +++ src/libbttracker/types/btt_tracker.c      2006-07-11 00:08:38.000000000 
> +0200
> @@ -15,6 +15,7 @@
>   *  limitations under the License.
>   */
>  
> +#include <inttypes.h>
>  /* other libs */
>  #include <apr.h>
>  #include <apr_pools.h>
> @@ -136,8 +137,8 @@
>    " <TR><TH>Startup Time:</TH><TD>%s</TD></TR>\n"
>    " <TR><TH>Hashes:</TH><TD>%u</TD></TR>\n"
>    " <TR><TH>Peers:</TH><TD>%u</TD></TR>\n"
> -  " <TR><TH>Announces:</TH><TD>%llu (%.02f/s)</TD></TR>\n"
> -  " <TR><TH>Faulty Announces:</TH><TD>%llu</TD></TR>\n"
> +  " <TR><TH>Announces:</TH><TD>%" PRIu64 " (%.02f/s)</TD></TR>\n"
> +  " <TR><TH>Faulty Announces:</TH><TD>%" PRIu64 "</TD></TR>\n"
>    " <TR><TH>Peers Returned:</TH><TD>0 < %u < %u</TD></TR>\n"
>    " <TR><TH>Return Interval:</TH><TD>%s</TD></TR>\n"
>    " <TR><TH>Hash Expiry:</TH><TD>%lus - %lus (Watermark %u)</TD></TR>\n"
> @@ -206,8 +207,8 @@
>    "  <NumRequests>%u</NumRequests>\n"
>    "  <NumHashes>%u</NumHashes>\n"
>    "  <NumPeers>%u</NumPeers>\n"
> -  "  <Announces>%llu</Announces>\n"
> -  "  <BadAnnounces>%llu</BadAnnounces>\n"
> +  "  <Announces>%" PRIu64 "</Announces>\n"
> +  "  <BadAnnounces>%" PRIu64 "</BadAnnounces>\n"
>    "  <StartT>%lu</StartT>\n"
>    "  <MasterPID>%u</MasterPID>\n"
>    "  <ServerTime>%lu</ServerTime>\n"
> @@ -215,7 +216,7 @@
>    " <DB>\n"
>    "  <Open>%u</Open>\n"
>    "  <Dir>%s</Dir>\n"
> -  "  <Cache>%u</Cache>\n"
> +  "  <Cache>%zu</Cache>\n"
>    " </DB>\n"
>    "</Tracker>\n",
>    tracker->c->random_retry,
> --- src/libbttracker/Net-BitTorrent-LibBT-Tracker/Tracker.xs.old      
> 2006-07-11 20:35:17.000000000 +0200
> +++ src/libbttracker/Net-BitTorrent-LibBT-Tracker/Tracker.xs  2006-07-11 
> 20:37:55.000000000 +0200
> @@ -572,12 +572,12 @@
>       DB_TXN* txn = NULL;
>       DBT key;
>       int ret = 0;
> -     unsigned int len = 0;
> +     size_t len = 0;
>       char* infohash = SvPV(h, len);
>       
>       if(len != BT_INFOHASH_LEN)
>       {
> -      fprintf(stderr, "Net::BitTorrent::LibBT::Tracker->Infohash(): len %u 
> != %u\n", len, BT_INFOHASH_LEN);
> +      fprintf(stderr, "Net::BitTorrent::LibBT::Tracker->Infohash(): len %zu 
> != %u\n", len, BT_INFOHASH_LEN);
>        fflush(stderr);
>        XSRETURN_UNDEF;
>       }
> @@ -1043,12 +1043,12 @@
>       DB_TXN* txn = NULL;
>       DBT key;
>       int ret = 0;
> -     unsigned int len = 0;
> +     size_t len = 0;
>       char* peer_id = SvPV(inpeerid, len);
>       
>       if(len != BT_PEERID_LEN)
>       {
> -      fprintf(stderr, "Net::BitTorrent::LibBT::Tracker->Peer(): len %u != 
> %u\n", len, BT_PEERID_LEN);
> +      fprintf(stderr, "Net::BitTorrent::LibBT::Tracker->Peer(): len %zu != 
> %u\n", len, BT_PEERID_LEN);
>        fflush(stderr);
>        XSRETURN_UNDEF;
>       }
> --- src/apache2/php_mod_bt/php_mod_bt.c.old   2006-07-11 20:39:04.000000000 
> +0200
> +++ src/apache2/php_mod_bt/php_mod_bt.c       2006-07-11 20:41:29.000000000 
> +0200
> @@ -19,6 +19,7 @@
>  #include <sys/socket.h>
>  #include <netinet/in.h>
>  #include <arpa/inet.h>
> +#include <inttypes.h>
>  /* php */
>  #include "php.h"
>  #include "SAPI.h"
> @@ -144,15 +145,15 @@
>   hash_str = bt_str_infohash(p, hash->infohash);
>   add_assoc_stringl(rv, "infohash", hash_str, strlen(hash_str), 1);
>   add_assoc_stringl(rv, "filename", hash->filename, strlen(hash->filename), 
> 1);
> - size_str = apr_psprintf(p, "%llu", hash->filesize);
> + size_str = apr_psprintf(p, "%" PRIu64, hash->filesize);
>   add_assoc_stringl(rv, "filesize", size_str, strlen(size_str), 1);
> - size_str = apr_psprintf(p, "%llu", hash->max_uploaded);
> + size_str = apr_psprintf(p, "%" PRIu64, hash->max_uploaded);
>   add_assoc_stringl(rv, "max_uploaded", size_str, strlen(size_str), 1);
> - size_str = apr_psprintf(p, "%llu", hash->max_downloaded);
> + size_str = apr_psprintf(p, "%" PRIu64, hash->max_downloaded);
>   add_assoc_stringl(rv, "max_downloaded", size_str, strlen(size_str), 1);
> - size_str = apr_psprintf(p, "%llu", hash->max_left);
> + size_str = apr_psprintf(p, "%" PRIu64, hash->max_left);
>   add_assoc_stringl(rv, "max_left", size_str, strlen(size_str), 1);
> - size_str = apr_psprintf(p, "%llu", hash->min_left);
> + size_str = apr_psprintf(p, "%" PRIu64, hash->min_left);
>   add_assoc_stringl(rv, "min_left", size_str, strlen(size_str), 1);
>   add_assoc_long(rv, "hits", hash->hits);
>   add_assoc_long(rv, "peers", hash->peers);
> @@ -413,11 +414,11 @@
>   add_assoc_long(rv, "num_want", peer->num_want);
>   add_assoc_long(rv, "num_got", peer->num_got);
>   add_assoc_long(rv, "announce_bytes", peer->announce_bytes);
> - size_str = apr_psprintf(p, "%llu", peer->uploaded);
> + size_str = apr_psprintf(p, "%" PRIu64, peer->uploaded);
>   add_assoc_stringl(rv, "uploaded", size_str, strlen(size_str), 1);
> - size_str = apr_psprintf(p, "%llu", peer->downloaded);
> + size_str = apr_psprintf(p, "%" PRIu64, peer->downloaded);
>   add_assoc_stringl(rv, "downloaded", size_str, strlen(size_str), 1);
> - size_str = apr_psprintf(p, "%llu", peer->left);
> + size_str = apr_psprintf(p, "%" PRIu64, peer->left);
>   add_assoc_stringl(rv, "left", size_str, strlen(size_str), 1);
>   
>   return rv;
> --- src/tests/types.c.old     2006-07-11 20:43:01.000000000 +0200
> +++ src/tests/types.c 2006-07-11 20:43:36.000000000 +0200
> @@ -9,12 +9,12 @@
>   printf
>   (
>    "Sizes of libbtt Data Strcutres:\n"
> -  " btt_db:                   % 4d\n"
> -  " btt_tracker_stats:        % 4d\n"
> -  " btt_tracker_config:       % 4d\n"
> -  " btt_tracker:              % 4d\n"
> -  " btt_infohash:             % 4d\n"
> -  " btt_peer:                 % 4d\n",
> +  " btt_db:                   % 4zd\n"
> +  " btt_tracker_stats:        % 4zd\n"
> +  " btt_tracker_config:       % 4zd\n"
> +  " btt_tracker:              % 4zd\n"
> +  " btt_infohash:             % 4zd\n"
> +  " btt_peer:                 % 4zd\n",
>    sizeof(btt_db), sizeof(btt_tracker_stats), sizeof(btt_tracker_config), 
> sizeof(btt_tracker), sizeof(btt_infohash), sizeof(btt_peer)
>   );
>   exit(0);


-- 
Tank will paradigmatically harness 24/365 mindshares.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to