diff options
Diffstat (limited to 'fitsy++/mmapincr.C')
-rw-r--r-- | fitsy++/mmapincr.C | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/fitsy++/mmapincr.C b/fitsy++/mmapincr.C new file mode 100644 index 0000000..b0118d3 --- /dev/null +++ b/fitsy++/mmapincr.C @@ -0,0 +1,53 @@ +// Copyright (C) 1999-2018 +// Smithsonian Astrophysical Observatory, Cambridge, MA, USA +// For conditions of distribution and use, see copyright notice in "copyright" + +#include "mmapincr.h" + +#ifndef __WIN32 + +#include <unistd.h> +#include <fcntl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/mman.h> + +FitsMMapIncr::FitsMMapIncr(const char* fn) +{ + // parse the fn and options + parse(fn); + if (!valid_) + return; + + // reset + valid_ =0; + + if (!pName_) + return; + + // Map the file. + int fd = open(pName_, O_RDONLY); + if (fd == -1) + return; + + struct stat info; + if (fstat(fd, &info) < 0) + return; + + close(fd); + + // check to see if we have something, we may have a small array + if (info.st_size <= 0) + return; + + filesize_ = info.st_size; + + // so far, so good + valid_ = 1; +} + +#else + +FitsMMapIncr::FitsMMapIncr(const char* fn) {} + +#endif |