summaryrefslogtreecommitdiff
path: root/atari/findfile.c
diff options
context:
space:
mode:
authorOle Loots <ole@monochrom.net>2011-12-06 21:06:41 +0000
committerOle Loots <ole@monochrom.net>2011-12-06 21:06:41 +0000
commite7e8024be80b734bf1197615e70cc198bb9758c6 (patch)
treed69763a205d7253e84da6a22cb6b77790583e06d /atari/findfile.c
parent3ba6a15fa7af580d14044ab2e73318b75deb6433 (diff)
downloadnetsurf-e7e8024be80b734bf1197615e70cc198bb9758c6.tar.gz
netsurf-e7e8024be80b734bf1197615e70cc198bb9758c6.tar.bz2
Fix focus element
svn path=/trunk/netsurf/; revision=13251
Diffstat (limited to 'atari/findfile.c')
-rwxr-xr-xatari/findfile.c57
1 files changed, 52 insertions, 5 deletions
diff --git a/atari/findfile.c b/atari/findfile.c
index 9b9bf1fd2..55881a11d 100755
--- a/atari/findfile.c
+++ b/atari/findfile.c
@@ -33,8 +33,53 @@
#include "atari/misc.h"
#include "atari/osspec.h"
+char * local_file_to_url( const char * filename )
+{
+ #define BACKSLASH 0x5C
+ char * url;
+ if( strlen(filename) <= 2){
+ return( NULL );
+ }
+
+ char * fname_local = alloca( strlen(filename)+1 );
+ char * start = (char*)fname_local;
+ strcpy( start, filename );
+
+ /* if path points to unified filesystem, skip that info: */
+ if( fname_local[1] == ':' && fname_local[0] == 'U' ){
+ start = &fname_local[2];
+ }
+
+ /* if we got something like "C:\folder\file.txt", handle that: */
+ if( start[1] == ':' ){
+ start[1] = (char)tolower(start[0]);
+ start++;
+ }
+
+ /* skip leading slash, already included in file scheme: */
+ if( start[0] == (char)BACKSLASH || start[0] == '/' ){
+ start++;
+ }
+
+ /* convert backslashes: */
+ for( int i=0; i<strlen(start); i++ ){
+ if( start[i] == BACKSLASH ){
+ start[i] = '/';
+ }
+ }
+
+ // TODO: make file path absolute if it isn't yet.
+ url = malloc( strlen(start) + FILE_SCHEME_PREFIX_LEN + 1);
+ strcpy( url, FILE_SCHEME_PREFIX );
+ strcat( url, start );
+ return( url );
+ #undef BACKSLASH
+}
+
+/* convert an local path to an URL, memory for URL is allocated. */
char *path_to_url(const char *path_in)
{
+ #define BACKSLASH 0x5C
char * path_ptr=NULL;
char * path;
LOG(("path2url in: %s\n", path_in));
@@ -45,7 +90,8 @@ char *path_to_url(const char *path_in)
} else {
path = path_ptr = (char*)malloc(PATH_MAX+1);
gemdos_realpath(path_in, path);
- if( *path == '/' || *path == 0x5C ) {
+
+ if( *path == '/' || *path == BACKSLASH ) {
path++;
}
if( sys_type() != SYS_MINT ){
@@ -63,15 +109,16 @@ char *path_to_url(const char *path_in)
int i=0;
while( url[i] != 0 ){
- if( url[i] == 0x5C ){
+ if( url[i] == BACKSLASH ){
url[i] = '/';
}
i++;
}
- if( path_ptr )
+ if( path_ptr )
free( path_ptr );
LOG(("path2url out: %s\n", url));
return url;
+ #undef BACKSLASH
}
@@ -108,10 +155,10 @@ char *url_to_path(const char *url)
* \return buf
*
* Search order is: ./, NETSURF_GEM_RESPATH, ./$HOME/.netsurf/, $NETSURFRES/ (where NETSURFRES is an
- * environment variable),
+ * environment variable),
*/
#ifndef NETSURF_GEM_RESPATH
- #define NETSURF_GEM_RESPATH "./res/"
+ #define NETSURF_GEM_RESPATH "./res/"
#endif
char * atari_find_resource(char *buf, const char *filename, const char *def)