1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-09-28 03:06:20 -04:00

Use long long in place of long in conv.c to allow show size of files bigger

than 2GiB in the download dialog. Also let regetting big files.
Previously the Content-Length variable in http.c was int, what is
not enough. Now it is long long.
This commit is contained in:
Witold Filipczyk 2010-09-04 14:10:51 +02:00 committed by witekfl
parent 9574b38abe
commit f60d85c4c1
3 changed files with 19 additions and 20 deletions

View File

@ -1848,10 +1848,10 @@ again:
d = parse_header(conn->cached->head, "Content-Length", NULL);
if (d) {
unsigned char *ep;
int l;
long long l;
errno = 0;
l = strtol(d, (char **) &ep, 10);
l = strtoll(d, (char **) &ep, 10);
if (!errno && !*ep && l >= 0) {
if (!http->close || POST_HTTP_1_0(version))

View File

@ -52,7 +52,7 @@
* if it had to be truncated. A negative value signs an error. */
NONSTATIC_INLINE int
elinks_ulongcat(unsigned char *s, unsigned int *slen,
unsigned long number, unsigned int width,
unsigned long long number, unsigned int width,
unsigned char fillchar, unsigned int base,
unsigned int upper)
{
@ -62,7 +62,7 @@ elinks_ulongcat(unsigned char *s, unsigned int *slen,
unsigned int start = slen ? *slen : 0;
unsigned int nlen = 1; /* '0' is one char, we can't have less. */
unsigned int pos = start; /* starting position of the number */
unsigned long q = number;
unsigned long long q = number;
int ret = 0;
if (width < 1 || !s || base < 2 || base > 16) return -1;
@ -110,7 +110,7 @@ elinks_ulongcat(unsigned char *s, unsigned int *slen,
/** Similar to elinks_ulongcat() but for @c long number. */
NONSTATIC_INLINE int
elinks_longcat(unsigned char *s, unsigned int *slen,
long number, unsigned int width,
long long number, unsigned int width,
unsigned char fillchar, unsigned int base,
unsigned int upper)
{
@ -129,9 +129,9 @@ elinks_longcat(unsigned char *s, unsigned int *slen,
/** @relates string */
struct string *
add_long_to_string(struct string *string, long number)
add_long_to_string(struct string *string, long long number)
{
unsigned char buffer[32];
unsigned char buffer[64];
int length = 0;
int width;
@ -146,10 +146,10 @@ add_long_to_string(struct string *string, long number)
/** @relates string */
struct string *
add_knum_to_string(struct string *string, long num)
add_knum_to_string(struct string *string, long long num)
{
int ret;
unsigned char t[32];
unsigned char t[64];
int tlen = 0;
if (num && (num / (1024 * 1024)) * (1024 * 1024) == num) {
@ -173,7 +173,7 @@ add_knum_to_string(struct string *string, long num)
/** @relates string */
struct string *
add_xnum_to_string(struct string *string, off_t xnum)
add_xnum_to_string(struct string *string, long long xnum)
{
unsigned char suff[3] = "\0i";
off_t d = -1;
@ -191,7 +191,6 @@ add_xnum_to_string(struct string *string, off_t xnum)
xnum /= 1024;
}
assert(xnum == (long) xnum);
add_long_to_string(string, xnum);
if (xnum < 10 && d != -1) {
@ -291,7 +290,7 @@ add_html_to_string(struct string *string, const unsigned char *src, int len)
int rollback_length = string->length;
if (!add_bytes_to_string(string, "&#", 2)
|| !add_long_to_string(string, (long) *src)
|| !add_long_to_string(string, (long long)*src)
|| !add_char_to_string(string, ';')) {
string->length = rollback_length;
string->source[rollback_length] = '\0';

View File

@ -44,9 +44,9 @@ unhx(register unsigned char a)
}
/* These use granular allocation stuff. */
struct string *add_long_to_string(struct string *string, long number);
struct string *add_knum_to_string(struct string *string, long number);
struct string *add_xnum_to_string(struct string *string, off_t number);
struct string *add_long_to_string(struct string *string, long long number);
struct string *add_knum_to_string(struct string *string, long long number);
struct string *add_xnum_to_string(struct string *string, long long number);
struct string *add_duration_to_string(struct string *string, long seconds);
struct string *add_timeval_to_string(struct string *string, timeval_T *timeval);
@ -118,11 +118,11 @@ struct string *add_shell_safe_to_string(struct string *string, unsigned char *cm
/* These are fast functions to convert integers to string, or to hexadecimal string. */
int elinks_ulongcat(unsigned char *s, unsigned int *slen, unsigned long number,
int elinks_ulongcat(unsigned char *s, unsigned int *slen, unsigned long long number,
unsigned int width, unsigned char fillchar, unsigned int base,
unsigned int upper);
int elinks_longcat(unsigned char *s, unsigned int *slen, long number,
int elinks_longcat(unsigned char *s, unsigned int *slen, long long number,
unsigned int width, unsigned char fillchar, unsigned int base,
unsigned int upper);
@ -131,7 +131,7 @@ int elinks_longcat(unsigned char *s, unsigned int *slen, long number,
#define ulongcat(s, slen, number, width, fillchar) \
elinks_ulongcat((unsigned char *) (s), \
(unsigned int *) (slen), \
(unsigned long) (number), \
(unsigned long long) (number), \
(unsigned int) (width), \
(unsigned char) (fillchar), \
(unsigned int) 10, \
@ -141,7 +141,7 @@ int elinks_longcat(unsigned char *s, unsigned int *slen, long number,
#define longcat(s, slen, number, width, fillchar) \
elinks_longcat((unsigned char *) (s), \
(unsigned int *) (slen), \
(long) (number), \
(long long) (number), \
(unsigned int) (width), \
(unsigned char) (fillchar), \
(unsigned int) 10, \
@ -151,7 +151,7 @@ int elinks_longcat(unsigned char *s, unsigned int *slen, long number,
#define ulonghexcat(s, slen, number, width, fillchar, upper) \
elinks_ulongcat((unsigned char *) (s), \
(unsigned int *) (slen), \
(unsigned long) (number), \
(unsigned long long) (number), \
(unsigned int) (width), \
(unsigned char) (fillchar), \
(unsigned int) 16, \