Ignore:
Timestamp:
Jun 11, 2014 2:35:04 PM (8 years ago)
Author:
ldelgass
Message:

Error on missing file, set per-process cache directory, sky node fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/geovis/RendererCmd.cpp

    r4375 r4382  
    1818#include <sys/uio.h>
    1919#include <tcl.h>
     20
     21#include <osgDB/FileUtils>
     22#include <osgDB/FileNameUtils>
    2023
    2124#include <osgEarth/Registry>
     
    780783    if (type[0] == 'i' && strcmp(type, "image") == 0) {
    781784        char *driver = Tcl_GetString(objv[4]);
    782         char *url = NULL;
     785        std::string url;
    783786        if (objc > 6) {
    784             url =  Tcl_GetString(objv[5]);
     787            url = g_renderer->getCanonicalPath(std::string(Tcl_GetString(objv[5])));
     788            if (url.empty()) {
     789                Tcl_AppendResult(interp, "file not found: \"",
     790                                 url.c_str(), "\"", (char*)NULL);
     791                return TCL_ERROR;
     792            }
    785793        }
    786794        if (driver[0] == 'd' && strcmp(driver, "debug") == 0) {
     
    833841    } else if (type[0] == 'e' && strcmp(type, "elevation") == 0) {
    834842        char *driver = Tcl_GetString(objv[4]);
    835         char *url =  Tcl_GetString(objv[5]);
     843        std::string url = g_renderer->getCanonicalPath(std::string(Tcl_GetString(objv[5])));
     844        if (url.empty()) {
     845            Tcl_AppendResult(interp, "file not found: \"",
     846                             url.c_str(), "\"", (char*)NULL);
     847            return TCL_ERROR;
     848        }
    836849
    837850        if (driver[0] == 'g' && strcmp(driver, "gdal") == 0) {
     
    856869    } else if (type[0] == 'p' && strcmp(type, "point") == 0) {
    857870        osgEarth::Drivers::OGRFeatureOptions opts;
    858         char *url =  Tcl_GetString(objv[4]);
     871        std::string url = g_renderer->getCanonicalPath(std::string(Tcl_GetString(objv[4])));
     872        if (url.empty()) {
     873            Tcl_AppendResult(interp, "file not found: \"",
     874                             url.c_str(), "\"", (char*)NULL);
     875            return TCL_ERROR;
     876        }
    859877        char *name = Tcl_GetString(objv[5]);
    860878
     
    878896    } else if (type[0] == 'p' && strcmp(type, "polygon") == 0) {
    879897        osgEarth::Drivers::OGRFeatureOptions opts;
    880         char *url =  Tcl_GetString(objv[4]);
     898        std::string url = g_renderer->getCanonicalPath(std::string(Tcl_GetString(objv[4])));
     899        if (url.empty()) {
     900            Tcl_AppendResult(interp, "file not found: \"",
     901                             url.c_str(), "\"", (char*)NULL);
     902            return TCL_ERROR;
     903        }
    881904        char *name = Tcl_GetString(objv[5]);
    882905        opts.url() = url;
     
    898921    } else if (type[0] == 'l' && strcmp(type, "line") == 0) {
    899922        osgEarth::Drivers::OGRFeatureOptions opts;
    900         char *url =  Tcl_GetString(objv[4]);
     923        std::string url = g_renderer->getCanonicalPath(std::string(Tcl_GetString(objv[4])));
     924        if (url.empty()) {
     925            Tcl_AppendResult(interp, "file not found: \"",
     926                             url.c_str(), "\"", (char*)NULL);
     927            return TCL_ERROR;
     928        }
    901929        char *name = Tcl_GetString(objv[5]);
    902930        opts.url() = url;
     
    925953   } else if (type[0] == 't' && strcmp(type, "text") == 0) {
    926954        osgEarth::Drivers::OGRFeatureOptions opts;
    927         char *url =  Tcl_GetString(objv[4]);
     955        std::string url = g_renderer->getCanonicalPath(std::string(Tcl_GetString(objv[4])));
     956        if (url.empty()) {
     957            Tcl_AppendResult(interp, "file not found: \"",
     958                             url.c_str(), "\"", (char*)NULL);
     959            return TCL_ERROR;
     960        }
    928961        char *content = Tcl_GetString(objv[5]);
    929962        char *priority = Tcl_GetString(objv[6]);
Note: See TracChangeset for help on using the changeset viewer.