Mercurial > gftp.yaz
diff lib/protocols.c @ 60:8a9324fb63a4
2002-11-21 Brian Masney <masneyb@gftp.org>
* lib/protocols.c (gftp_get_next_line) - fixed several bugs
* lib/cache.c - Don't do a cache lookup in gftp_new_cache_entry(). In
gftp_find_cache_entry(), don't log an error to the user if we can't
open up the cache file
* lib/rfc959.c lib/rfc2068.c lib/protocols.c - small cache fixes
* lib/cache.c lib/rfc2068.c lib/rfc959.c - pass full buffer size
instead of buffer size - 1 to gftp_get_line
author | masneyb |
---|---|
date | Fri, 22 Nov 2002 00:54:38 +0000 |
parents | c01d91c10f6c |
children | 41b71c4e5076 |
line wrap: on
line diff
--- a/lib/protocols.c Thu Nov 21 02:49:06 2002 +0000 +++ b/lib/protocols.c Fri Nov 22 00:54:38 2002 +0000 @@ -343,15 +343,17 @@ } #endif - if (ret >= 0 && !request->cached && request->cachefd > 0&& + if (ret >= 0 && !request->cached && request->cachefd > 0 && request->last_dir_entry != NULL) { - if (gftp_writefmt (request, request->cachefd, "%s\n", - request->last_dir_entry) < 0) + if (gftp_write (request, request->last_dir_entry, + request->last_dir_entry_len, request->cachefd) < 0) { request->logging_function (gftp_logging_error, request->user_data, _("Error: Cannot write to cache: %s\n"), g_strerror (errno)); + close (request->cachefd); + request->cachefd = -1; } } } while (ret > 0 && !gftp_match_filespec (fle->file, filespec)); @@ -1883,13 +1885,14 @@ { *rbuf = g_malloc0 (sizeof (**rbuf)); (*rbuf)->max_bufsize = len; - (*rbuf)->buffer = g_malloc ((*rbuf)->max_bufsize); + (*rbuf)->buffer = g_malloc ((*rbuf)->max_bufsize + 1); if ((ret = gftp_read (request, (*rbuf)->buffer, (*rbuf)->max_bufsize, fd)) <= 0) { gftp_free_getline_buffer (rbuf); return (ret); } + (*rbuf)->buffer[ret] = '\0'; (*rbuf)->cur_bufsize = ret; (*rbuf)->curpos = (*rbuf)->buffer; } @@ -1909,20 +1912,12 @@ if (pos > (*rbuf)->curpos && *(pos - 1) == '\r') pos--; *pos = '\0'; - - if (len > pos - (*rbuf)->curpos + 1) - len = pos - (*rbuf)->curpos + 1; } else - { - nextpos = NULL; - if (len > (*rbuf)->cur_bufsize) - len = (*rbuf)->cur_bufsize; - } + nextpos = NULL; strncpy (str, (*rbuf)->curpos, len); - str[len] = '\0'; - retval = len; + retval = pos - (*rbuf)->curpos > len ? len : pos - (*rbuf)->curpos; if (pos != NULL) { @@ -1956,6 +1951,7 @@ gftp_free_getline_buffer (rbuf); return (ret); } + (*rbuf)->buffer[ret + copysize] = '\0'; (*rbuf)->cur_bufsize = ret + copysize; } }