IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 26493


Ignore:
Timestamp:
Dec 29, 2009, 11:07:23 AM (16 years ago)
Author:
bills
Message:

support -ipprc file being in nebulous

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/config/pmConfig.c

    r24496 r26493  
    4747
    4848static bool checkPath(const char *filename, bool create, bool trunc);
     49static psString resolveConfigFile(const char *name);
    4950
    5051bool pmConfigReadParamsSet(bool newReadCameraConfig)
     
    447448            psWarning("-ipprc command-line switch provided without the required filename --- ignored.\n");
    448449        } else {
    449             configFile = psStringCopy(argv[argNum]);
     450            configFile = resolveConfigFile(argv[argNum]);
    450451            psArgumentRemove(argNum, argc, argv);
    451452        }
     
    18341835    return false;
    18351836}
     1837
     1838static psString resolveConfigFile(const char *nameArg)
     1839{
     1840    // if config file name is nebulous path resolve it
     1841    // otherwise just return a copy of the argument
     1842    if (strncasecmp(nameArg, "neb://", strlen("neb://"))) {
     1843        return psStringCopy(nameArg);
     1844    }
     1845
     1846    char *neb_server = getenv("NEB_SERVER");
     1847
     1848    // if env isn't set, check the config system
     1849    if (!neb_server) {
     1850        psError(PM_ERR_CONFIG, true, "NEB_SERVER environment variable must be set in order to resolve config file.");
     1851            return NULL;
     1852    }
     1853
     1854    nebServer *server = nebServerAlloc(neb_server);
     1855    if (!server) {
     1856        psError(PM_ERR_SYS, true, "failed to create a nebServer object.");
     1857        return NULL;
     1858    }
     1859
     1860    char *nebfile = nebFind(server, nameArg);
     1861    nebServerFree(server);
     1862    if (!nebfile) {
     1863        // object does not exist
     1864        psError(PM_ERR_SYS, true, "failed to resolve nebulous path: %s.", nameArg);
     1865        return NULL;
     1866    }
     1867    // XXX: do I need to free nebfile?
     1868
     1869    return psStringCopy(nebfile);
     1870}
Note: See TracChangeset for help on using the changeset viewer.