Skip to content

Commit

Permalink
Properly parse search size expressions as off_t, not int.
Browse files Browse the repository at this point in the history
  • Loading branch information
dolda2000 committed Jul 1, 2011
1 parent 84f2822 commit 4e564b5
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 14 deletions.
18 changes: 9 additions & 9 deletions daemon/fnet-dc.c
Original file line number Diff line number Diff line change
Expand Up @@ -2429,9 +2429,9 @@ static int hubsendchat(struct fnetnode *fn, int public, wchar_t *to, wchar_t *st
return(0);
}

static void findsizelimit(struct sexpr *sexpr, int *min, int *max)
static void findsizelimit(struct sexpr *sexpr, off_t *min, off_t *max)
{
int minl, maxl, minr, maxr, retmin, retmax;
off_t minl, maxl, minr, maxr, retmin, retmax;

switch(sexpr->op)
{
Expand Down Expand Up @@ -2475,14 +2475,14 @@ static void findsizelimit(struct sexpr *sexpr, int *min, int *max)
}
case SOP_SIZELT:
retmin = 0;
retmax = sexpr->d.n - 1;
retmax = sexpr->d.sz - 1;
break;
case SOP_SIZEEQ:
retmin = sexpr->d.n;
retmax = sexpr->d.n;
retmin = sexpr->d.sz;
retmax = sexpr->d.sz;
break;
case SOP_SIZEGT:
retmin = sexpr->d.n + 1;
retmin = sexpr->d.sz + 1;
retmax = -1;
break;
default:
Expand Down Expand Up @@ -2533,7 +2533,7 @@ static int hubsearch(struct fnetnode *fn, struct search *srch, struct srchfnnlis
size_t sstrsize, sstrdata;
struct sockaddr *name;
socklen_t namelen;
int minsize, maxsize;
off_t minsize, maxsize;
struct hash *hash;

hub = fn->data;
Expand Down Expand Up @@ -2566,10 +2566,10 @@ static int hubsearch(struct fnetnode *fn, struct search *srch, struct srchfnnlis
if(minsize != 0)
{
sizebuf2(sstr, sstrdata + 32, 1);
sstrdata += snprintf(sstr + sstrdata, sstrsize - sstrdata, "T?F?%i?1?", minsize);
sstrdata += snprintf(sstr + sstrdata, sstrsize - sstrdata, "T?F?%ji?1?", (intmax_t)minsize);
} else if(maxsize != -1) {
sizebuf2(sstr, sstrdata + 32, 1);
sstrdata += snprintf(sstr + sstrdata, sstrsize - sstrdata, "T?T?%i?1?", maxsize);
sstrdata += snprintf(sstr + sstrdata, sstrsize - sstrdata, "T?T?%ji?1?", (intmax_t)maxsize);
} else {
bufcat(sstr, "F?F?0?1?", 8);
}
Expand Down
8 changes: 4 additions & 4 deletions daemon/search.c
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ struct sexpr *parsesexpr(int argc, wchar_t **argv)
sexpr->op = SOP_SIZEEQ;
else
sexpr->op = SOP_SIZEGT;
sexpr->d.n = wcstol(tok2->d.str + 2, NULL, 0);
sexpr->d.sz = wcstoll(tok2->d.str + 2, NULL, 0);
sexpr->cost = 0;
getsexpr(tok->d.se = sexpr);
freetok(tok2);
Expand Down Expand Up @@ -1110,11 +1110,11 @@ static int srisvalid(struct srchres *sr, struct sexpr *sexpr)
p = fnfilebasename(sr->filename);
return(wcsexists(p, sexpr->d.s));
case SOP_SIZELT:
return(sr->size < sexpr->d.n);
return(sr->size < sexpr->d.sz);
case SOP_SIZEEQ:
return(sr->size == sexpr->d.n);
return(sr->size == sexpr->d.sz);
case SOP_SIZEGT:
return(sr->size > sexpr->d.n);
return(sr->size > sexpr->d.sz);
case SOP_HASHIS:
if(sr->hash == NULL)
return(0);
Expand Down
2 changes: 1 addition & 1 deletion daemon/search.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ struct sexpr
int inited;
} re;
wchar_t *s;
int n;
off_t sz;
struct hash *hash;
} d;
};
Expand Down

0 comments on commit 4e564b5

Please sign in to comment.