From d21447d096a320a08b3efb2b8768fad0dcdcfd64 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Thu, 5 May 2016 22:28:51 +0100 Subject: move frontends into sub directory --- frontends/amiga/stringview/urlhistory.c | 124 ++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 frontends/amiga/stringview/urlhistory.c (limited to 'frontends/amiga/stringview/urlhistory.c') diff --git a/frontends/amiga/stringview/urlhistory.c b/frontends/amiga/stringview/urlhistory.c new file mode 100644 index 000000000..c58a3770b --- /dev/null +++ b/frontends/amiga/stringview/urlhistory.c @@ -0,0 +1,124 @@ +/* + * Copyright 2009 Rene W. Olsen + * Copyright 2009 Stephen Fellner + * Copyright 2009 Chris Young + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include + +#include + +#include "amiga/os3support.h" + +#include "urlhistory.h" + +#include "content/urldb.h" +#include "utils/nsoption.h" + +static struct List PageList; + +#ifdef __amigaos4__ +#define ALLOCVEC_SHARED(N) AllocVecTags((N), AVT_Type, MEMF_SHARED, TAG_DONE); +#else +#define ALLOCVEC_SHARED(N) AllocVec((N), MEMF_SHARED); +#endif + +void URLHistory_Init( void ) +{ + // Initialise page list + NewList( &PageList ); +} + + +void URLHistory_Free( void ) +{ + struct Node *node; + + while(( node = RemHead( &PageList ))) + { + if( node->ln_Name) FreeVec( node->ln_Name ); + FreeVec( node ); + } +} + + +void URLHistory_ClearList( void ) +{ + struct Node *node; + + while(( node = RemHead( &PageList ))) + { + if( node->ln_Name) FreeVec( node->ln_Name ); + FreeVec( node ); + } +} + + +struct List * URLHistory_GetList( void ) +{ + return &PageList; +} + +static bool URLHistoryFound(nsurl *url, const struct url_data *data) +{ + struct Node *node; + + /* skip non-visited pages - disabled for testing + if(data->visits <= 0) return true; + */ + + /* skip this URL if it is already in the list */ + if(URLHistory_FindPage(nsurl_access(url))) return true; + + node = ALLOCVEC_SHARED(sizeof(struct Node)); + + if ( node ) + { + STRPTR urladd = (STRPTR) ALLOCVEC_SHARED( strlen ( nsurl_access(url) ) + 1); + + if ( urladd ) + { + strcpy(urladd, nsurl_access(url)); + node->ln_Name = urladd; + AddTail( &PageList, node ); + } + else + { + FreeVec(node); + } + } + return true; +} + +struct Node * URLHistory_FindPage( const char *urlString ) +{ + return FindName(&PageList,urlString); +} + + +void URLHistory_AddPage( const char * urlString ) +{ + if(!nsoption_bool(url_suggestion)) return; + + // Only search if length > 0 + if( strlen( urlString ) > 0 ) + { + urldb_iterate_partial(urlString, URLHistoryFound); + } +} -- cgit v1.2.3