You should have received a copy of the GNU General Public License
along with Wget; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+In addition, as a special exception, the Free Software Foundation
+gives permission to link the code of its release of Wget with the
+OpenSSL project's "OpenSSL" library (or with modified versions of it
+that use the same license as the "OpenSSL" library), and distribute
+the linked executables. You must obey the GNU General Public License
+in all respects for all of the code used other than "OpenSSL". If you
+modify this file, you may extend this exception to your version of the
+file, but you are not obligated to do so. If you do not wish to do
+so, delete this exception statement from your version. */
#include <config.h>
}
dir = l = NULL;
- /* #### The next three lines are a memory leak because they don't
- bother to free the pointer that read_whole_line() returns!
- FIXME! */
+ /* Skip empty line. */
+ line = read_whole_line (fp);
+ if (line)
+ xfree (line);
- /* Empty line */
- read_whole_line (fp);
- /* "Directory PUB$DEVICE[PUB]" */
- read_whole_line (fp);
- /* Empty line */
- read_whole_line (fp);
+ /* Skip "Directory PUB$DEVICE[PUB]" */
+ line = read_whole_line (fp);
+ if (line)
+ xfree (line);
+
+ /* Skip empty line. */
+ line = read_whole_line (fp);
+ if (line)
+ xfree (line);
/* Line loop to end of file: */
while ((line = read_whole_line (fp)))
{
char *p;
i = clean_line (line);
- if (!i) break;
+ if (!i)
+ {
+ xfree (line);
+ break;
+ }
/* First column: Name. A bit of black magic again. The name my be
either ABCD.EXT or ABCD.EXT;NUM and it might be on a separate
if (!i)
{
DEBUGP(("confusing VMS listing item, leaving listing parser\n"));
+ xfree (line);
break;
}
tok = strtok(line, " ");
the first strtok(NULL, "-") will return everything until the end
of the line and only the next strtok() call will return NULL. */
DEBUGP(("nonsense in VMS listing, skipping this line\n"));
+ xfree (line);
break;
}
for (i=0; i<12; i++) if (!strcmp(tok,months[i])) break;
if (tok == NULL)
{
DEBUGP(("confusing VMS permissions, skipping line\n"));
+ xfree (line);
continue;
}
/* Permissons have the format "RWED,RWED,RE" */
{
char *tmpu, *tmpp; /* temporary, clean user and passwd */
- tmpu = encode_string (u->user);
- tmpp = u->passwd ? encode_string (u->passwd) : NULL;
+ tmpu = url_escape (u->user);
+ tmpp = u->passwd ? url_escape (u->passwd) : NULL;
upwd = (char *)xmalloc (strlen (tmpu)
+ (tmpp ? (1 + strlen (tmpp)) : 0) + 2);
sprintf (upwd, "%s%s%s@", tmpu, tmpp ? ":" : "", tmpp ? tmpp : "");
fprintf (fp, " ");
if (f->tstamp != -1)
{
- /* #### Should we translate the months? */
+ /* #### Should we translate the months? Or, even better, use
+ ISO 8601 dates? */
static char *months[] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"