Dolda2000 GitWeb
/
doldaconnect.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added bbtree functions.
[doldaconnect.git]
/
daemon
/
transfer.c
diff --git
a/daemon/transfer.c
b/daemon/transfer.c
index
99843ae
..
c432815
100644
(file)
--- a/
daemon/transfer.c
+++ b/
daemon/transfer.c
@@
-1,6
+1,6
@@
/*
* Dolda Connect - Modular multiuser Direct Connect-style client
/*
* Dolda Connect - Modular multiuser Direct Connect-style client
- * Copyright (C) 2004 Fredrik Tolf
(fredrik@dolda2000.com)
+ * Copyright (C) 2004 Fredrik Tolf
<fredrik@dolda2000.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@
-292,8
+292,12
@@
void *transfergetdata(struct transfer *transfer, size_t *size)
return(NULL);
if((transfer->endpos >= 0) && (transfer->curpos + *size >= transfer->endpos))
{
return(NULL);
if((transfer->endpos >= 0) && (transfer->curpos + *size >= transfer->endpos))
{
- *size = transfer->endpos - transfer->curpos;
- buf = srealloc(buf, *size);
+ if((*size = transfer->endpos - transfer->curpos) == 0) {
+ free(buf);
+ buf = NULL;
+ } else {
+ buf = srealloc(buf, *size);
+ }
}
transfer->curpos += *size;
bytesupload += *size;
}
transfer->curpos += *size;
bytesupload += *size;
@@
-301,7
+305,7
@@
void *transfergetdata(struct transfer *transfer, size_t *size)
return(buf);
}
return(buf);
}
-void transferprepul(struct transfer *transfer,
size_t size, size_t start, size
_t end, struct socket *lesk)
+void transferprepul(struct transfer *transfer,
off_t size, off_t start, off
_t end, struct socket *lesk)
{
transfersetsize(transfer, size);
transfer->curpos = start;
{
transfersetsize(transfer, size);
transfer->curpos = start;
@@
-457,7
+461,7
@@
void transfersetnick(struct transfer *transfer, wchar_t *newnick)
CBCHAINDOCB(transfer, trans_ac, transfer, L"nick");
}
CBCHAINDOCB(transfer, trans_ac, transfer, L"nick");
}
-void transfersetsize(struct transfer *transfer,
in
t newsize)
+void transfersetsize(struct transfer *transfer,
off_
t newsize)
{
transfer->size = newsize;
CBCHAINDOCB(transfer, trans_ac, transfer, L"size");
{
transfer->size = newsize;
CBCHAINDOCB(transfer, trans_ac, transfer, L"size");
@@
-627,9
+631,9
@@
int forkfilter(struct transfer *transfer)
errno = EACCES;
return(-1);
}
errno = EACCES;
return(-1);
}
- filtername = findfile(
icswcstombs(confgetstr("transfer", "filter"), NULL, NULL), NULL
, 0);
+ filtername = findfile(
"dc-filter", pwent->pw_dir
, 0);
if(filtername == NULL)
if(filtername == NULL)
- filtername = findfile(
"dc-filter", pwent->pw_dir
, 0);
+ filtername = findfile(
icswcstombs(confgetstr("transfer", "filter"), NULL, NULL), NULL
, 0);
if(filtername == NULL)
{
flog(LOG_WARNING, "could not find filter for user %s", pwent->pw_name);
if(filtername == NULL)
{
flog(LOG_WARNING, "could not find filter for user %s", pwent->pw_name);
@@
-666,7
+670,7
@@
int forkfilter(struct transfer *transfer)
{
argv = NULL;
argvsize = argvdata = 0;
{
argv = NULL;
argvsize = argvdata = 0;
- buf = sprintf2("%
i",
transfer->size);
+ buf = sprintf2("%
ji", (intmax_t)
transfer->size);
addtobuf(argv, filtername);
addtobuf(argv, filename);
addtobuf(argv, buf);
addtobuf(argv, filtername);
addtobuf(argv, filename);
addtobuf(argv, buf);