--- configure | 6 ++++ src/gps.c | 74 +++++++++++++++++++++++++++++++++++++++------------------- src/gps.h | 3 -- src/gpx.c | 31 +++++++++++------------- src/gpxview.h | 3 -- src/html.c | 15 +++++++---- src/main.c | 5 --- src/misc.c | 5 --- 8 files changed, 83 insertions(+), 59 deletions(-) --- gpxview-0.9.1.orig/src/main.c +++ gpxview-0.9.1/src/main.c @@ -2058,7 +2058,6 @@ void cleanup(appdata_t *appdata) { if(appdata->tools_menu) submenu_cleanup(appdata->tools_menu); #endif - gnome_vfs_shutdown(); icons_free(); gps_release(appdata); @@ -2398,10 +2397,6 @@ int main(int argc, char *argv[]) { icons_init(); - if(!gnome_vfs_init()) { - g_error("Gnome VFS init failed\n"); - } - #ifdef USE_MAEMO /* Create the hildon program and setup the title */ appdata.program = HILDON_PROGRAM(hildon_program_get_instance()); --- gpxview-0.9.1.orig/src/misc.c +++ gpxview-0.9.1/src/misc.c @@ -1036,12 +1036,9 @@ void dist_entry_set(GtkWidget *widget, f #ifndef USE_MAEMO #ifdef ENABLE_BROWSER_INTERFACE -#include int browser_url(appdata_t *appdata, char *url) { - /* taken from gnome-open, part of libgnome */ - GError *err = NULL; - gnome_url_show(url, &err); + printf("GPXView WARNING: browser_url() not implemented\n"); return 0; } #endif --- gpxview-0.9.1.orig/src/gpxview.h +++ gpxview-0.9.1/src/gpxview.h @@ -79,9 +79,6 @@ #include #include -#include -#include - /* all include appdata_t relies on go here ... */ #include "gpx.h" #include "settings.h" --- gpxview-0.9.1.orig/src/html.c +++ gpxview-0.9.1/src/html.c @@ -87,15 +87,19 @@ void release_load_context(GThread *self, gpointer loader_thread(gpointer data) { GThread *self = g_thread_self(); - GnomeVFSResult result; - GnomeVFSHandle *handle; - char buffer[4096]; - GnomeVFSFileSize bytes_read; +// GnomeVFSResult result; +// GnomeVFSHandle *handle; +// char buffer[4096]; +// GnomeVFSFileSize bytes_read; load_context_t *context = (load_context_t*)data; printf("%p: loader thread for %s running\n", self, context->url); + printf("GPXView WARNING: Function not implemented\n"); + release_load_context(self, context); + return NULL; +#if 0 result = gnome_vfs_open(&handle, context->url, GNOME_VFS_OPEN_READ); if(result != GNOME_VFS_OK) { g_print("%p: open error: %s\n", self, gnome_vfs_result_to_string(result)); @@ -143,6 +147,7 @@ gpointer loader_thread(gpointer data) { printf("%p: loader thread successfully finished\n", self); release_load_context(self, context); return NULL; +#endif } #ifdef ENABLE_BROWSER_INTERFACE @@ -175,7 +180,7 @@ static void on_link_clicked(GtkHTML *htm static void on_request_url(GtkHTML *html, const gchar *url, GtkHTMLStream *stream, gpointer data) { char buffer[4096]; - GnomeVFSFileSize bytes_read; + ssize_t bytes_read; http_context_t *context = (http_context_t*)data; --- gpxview-0.9.1.orig/src/gpx.c +++ gpxview-0.9.1/src/gpx.c @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include @@ -1262,10 +1264,8 @@ gpx_t *gpx_parse(gpx_dialog_t *dialog, c /* scan entire directory */ gpx_t *gpx_parse_dir(gpx_dialog_t *dialog, char *dirname, char *username) { - GnomeVFSResult result; - GnomeVFSDirectoryHandle *handle; - GnomeVFSFileInfo *finfo = gnome_vfs_file_info_new();; - + DIR *dir; + struct dirent dirent_buf, *dirent; gpx_t *gpx = NULL; /* show busy dialog */ @@ -1274,27 +1274,27 @@ gpx_t *gpx_parse_dir(gpx_dialog_t *dialo LIBXML_TEST_VERSION; - result = gnome_vfs_directory_open(&handle, dirname, - GNOME_VFS_FILE_INFO_DEFAULT); - - if(result != GNOME_VFS_OK) { + dir = opendir(dirname); + if (!dir) { errorf("Unable to open directory \"%s\":\n%s", - dirname, gnome_vfs_result_to_string(result)); + dirname, strerror(errno)); return NULL; } - while(GNOME_VFS_OK == gnome_vfs_directory_read_next(handle, finfo)) { - if(finfo->type == GNOME_VFS_FILE_TYPE_REGULAR) { - char *ext = finfo->name+strlen(finfo->name)-4; + while (readdir_r(dir, &dirent_buf, &dirent) == 0) { + if (dirent->d_type == DT_REG) { + if (strlen(dirent->d_name) <= 4) + continue; + char *ext = dirent->d_name+strlen(dirent->d_name)-4; /* check if file ends with .gpx or .loc */ if((strcasecmp(ext, ".gpx") == 0) || (strcasecmp(ext, ".loc") == 0)) { - char *filename = malloc(strlen(dirname)+strlen(finfo->name)+2); + char *filename = malloc(strlen(dirname)+strlen(dirent->d_name)+2); strcpy(filename, dirname); if(strlastchr(filename) != '/') strcat(filename, "/"); - strcat(filename, finfo->name); + strcat(filename, dirent->d_name); xmlTextReaderPtr reader = xmlReaderForFile(filename, NULL, 0); if (reader != NULL) { @@ -1328,8 +1328,7 @@ gpx_t *gpx_parse_dir(gpx_dialog_t *dialo gpx->name = strdup(n); } - gnome_vfs_file_info_unref(finfo); - gnome_vfs_directory_close(handle); + closedir(dir); return gpx; } --- gpxview-0.9.1.orig/src/gps.c +++ gpxview-0.9.1/src/gps.c @@ -20,6 +20,11 @@ #include #include #include +#include +#include +#include +#include +#include #include "gpxview.h" @@ -112,7 +117,11 @@ float gps_get_eph(appdata_t *appdata) { } static int gps_connect(gps_state_t *gps_state) { - GnomeVFSResult vfs_result; + struct hostent hbuf, *h; + struct sockaddr_in addr; + struct timeval timeout; + char buffer[2048]; + int err; #ifdef USE_MAEMO char errstr[256] = ""; @@ -138,10 +147,8 @@ static int gps_connect(gps_state_t *gps_ /* Create a socket to interact with GPSD. */ int retries = 5; - while(retries && - (GNOME_VFS_OK != (vfs_result = gnome_vfs_inet_connection_create( - &gps_state->iconn, GPSD_HOST, GPSD_PORT, NULL)))) { - printf("gps: Error creating connection to GPSD, retrying ...\n"); + while(retries && ((gps_state->socket = socket(AF_INET, SOCK_STREAM, 0)) < 0)) { + printf("gps: Error creating GPSD socket, retrying ...\n"); retries--; sleep(1); @@ -153,9 +160,8 @@ static int gps_connect(gps_state_t *gps_ } retries = 5; - while(retries && ((gps_state->socket = - gnome_vfs_inet_connection_to_socket(gps_state->iconn)) == NULL)) { - printf("gps: Error creating connecting GPSD socket, retrying ...\n"); + while(retries && gethostbyname_r(GPSD_HOST, &hbuf, buffer, sizeof(buffer), &h, &err)) { + printf("gps: Error resolving GPSD hostname, retrying ...\n"); retries--; sleep(1); @@ -166,10 +172,34 @@ static int gps_connect(gps_state_t *gps_ return -1; } - GTimeVal timeout = { 10, 0 }; - if(GNOME_VFS_OK != (vfs_result = gnome_vfs_socket_set_timeout( - gps_state->socket, &timeout, NULL))) { - printf("gps: Error setting GPSD timeout\n"); + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + memcpy(&addr.sin_addr.s_addr, h->h_addr, h->h_length); + addr.sin_port = htons(GPSD_PORT); + + retries = 5; + while(retries && (connect(gps_state->socket, (struct sockaddr *)&addr, sizeof(addr)) < 0)) { + printf("gps: Error connecting to GPSD, retrying ...\n"); + + retries--; + sleep(1); + } + + if(!retries) { + printf("gps: Finally failed ...\n"); + return -1; + } + + timeout.tv_sec = 10; + timeout.tv_usec = 0; + if(setsockopt(gps_state->socket, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)) < 0) { + printf("gps: Error setting GPSD send timeout\n"); + return -1; + } + timeout.tv_sec = 10; + timeout.tv_usec = 0; + if(setsockopt(gps_state->socket, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)) < 0) { + printf("gps: Error setting GPSD receive timeout\n"); return -1; } @@ -358,8 +388,7 @@ static gboolean gps_idle_cb(gpointer dat } gpointer gps_thread(gpointer data) { - GnomeVFSFileSize bytes_read; - GnomeVFSResult vfs_result; + ssize_t bytes; char str[512]; appdata_t *appdata = (appdata_t*)data; int cnt=1000; @@ -384,21 +413,18 @@ gpointer gps_thread(gpointer data) { const char *msg; if(!cnt) msg = msg_sat; else msg = msg_pos; - - if(GNOME_VFS_OK == - (vfs_result = gnome_vfs_socket_write(appdata->gps_state->socket, - msg, strlen(msg)+1, &bytes_read, NULL))) { + + if ((bytes = write(appdata->gps_state->socket, msg, strlen(msg)+1)) > 0) { /* update every second, wait here to make sure a complete */ /* reply is received */ if(cnt <= 1) usleep(500000); else sleep(1); - if(bytes_read == (strlen(msg)+1)) { - vfs_result = gnome_vfs_socket_read(appdata->gps_state->socket, - str, sizeof(str)-1, &bytes_read, NULL); - if(vfs_result == GNOME_VFS_OK) { - str[bytes_read] = 0; + if(bytes == (strlen(msg)+1)) { + bytes = read(appdata->gps_state->socket, str, sizeof(str)-1); + if (bytes > 0) { + str[bytes] = 0; // printf("gps: msg: %s (%d)\n", str, strlen(str)); @@ -419,7 +445,7 @@ gpointer gps_thread(gpointer data) { } else { if(connected) { printf("gps: stopping GPS connection due to user request\n"); - gnome_vfs_inet_connection_destroy(appdata->gps_state->iconn, NULL); + close(appdata->gps_state->socket); #ifdef USE_MAEMO gpsbt_stop(&appdata->gps_state->context); --- gpxview-0.9.1.orig/src/gps.h +++ gpxview-0.9.1/src/gps.h @@ -111,8 +111,7 @@ typedef struct gps_state { GThread* thread_p; GMutex *mutex; - GnomeVFSInetConnection *iconn; - GnomeVFSSocket *socket; + int socket; struct gps_data_t gpsdata; #else --- gpxview-0.9.1.orig/configure +++ gpxview-0.9.1/configure @@ -3156,6 +3156,9 @@ fi +pkg_failed=no +pkg_cv_gnome_vfs_module_CFLAGS= +pkg_cv_gnome_vfs_module_LIBS= if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -4699,6 +4702,9 @@ fi +pkg_failed=no +pkg_cv_gnome2_CFLAGS= +pkg_cv_gnome2_LIBS= if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then