This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
> Organization: NOAA/FSL > Keywords: 199404221711.AA16892 Hi Tom, > We recently ported our application to a Hewlett Packard system and I've > bumped into a new problem. > > When I call NcFile::add_var I get different behavior depending on the > path passed to the NcOldFile constructor. If the path contains no > directories, (the .cdf file is in the local directory) everything works > fine. But if the path includes some directory I get a NULL pointer > back from add_var. > > For example, > > If the path is defined as "myDatabase.cdf", no problem. > > If the path is defined as "/home/whatever/myDatabase.cdf", add_var > returns a NULL. > > It doesn't matter if the file is in the current directory or not. If > there is a directory in the path add_var won't work. I should mention > that the database opens just fine in either case. This is just a guess, but I'll bet the problem is in the netCDF C library on HP and would be fixed by rebuilding it with the patch described in the following small answer to a netCDF FAQ: 13. Is there a known bug with netCDF under HPUX? The current version of the HPUX operating system provides an incorrect definition of the FILENAME_MAX macro. This results in the symptom that the ncredef() function does not work properly when invoked from a directory other than the one the open netCDF file is in. A workaround is to apply the following patch to the file netcdf/libsrc/local_nc.h before building the library: diff -c -r1.39 local_nc.h *** /tmp/T0a004uN Tue Mar 8 11:14:12 1994 --- local_nc.h Wed Feb 9 15:56:36 1994 *************** *** 12,17 **** --- 12,21 ---- #include <stddef.h> /* size_t */ #include <stdio.h> /* FILENAME_MAX */ + #if defined(_HPUX_SOURCE) && FILENAME_MAX < 255 + /* Arrgh. HP thinks FILENAME_MAX is _POSIX_NAME_MAX */ + #undef FILENAME_MAX + #endif #ifndef FILENAME_MAX #define FILENAME_MAX 255 #endif Let me know if this doesn't fix the problem. --Russ