aboutsummaryrefslogtreecommitdiff
path: root/vendor/cfitsio/funpack.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /vendor/cfitsio/funpack.c
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'vendor/cfitsio/funpack.c')
-rw-r--r--vendor/cfitsio/funpack.c168
1 files changed, 168 insertions, 0 deletions
diff --git a/vendor/cfitsio/funpack.c b/vendor/cfitsio/funpack.c
new file mode 100644
index 00000000..49b679c5
--- /dev/null
+++ b/vendor/cfitsio/funpack.c
@@ -0,0 +1,168 @@
+/* FUNPACK
+ * R. Seaman, NOAO
+ * uses fits_img_compress by W. Pence, HEASARC
+ */
+
+#include "fitsio.h"
+#include "fpack.h"
+
+int main (int argc, char *argv[])
+{
+ fpstate fpvar;
+
+ if (argc <= 1) { fu_usage (); fu_hint (); exit (-1); }
+
+ fp_init (&fpvar);
+ fu_get_param (argc, argv, &fpvar);
+
+ if (fpvar.listonly) {
+ fp_list (argc, argv, fpvar);
+
+ } else {
+ fp_preflight (argc, argv, FUNPACK, &fpvar);
+ fp_loop (argc, argv, FUNPACK, fpvar);
+ }
+
+ exit (0);
+}
+
+int fu_get_param (int argc, char *argv[], fpstate *fpptr)
+{
+ int gottype=0, gottile=0, wholetile=0, iarg, len, ndim, ii;
+ char tmp[SZ_STR], tile[SZ_STR];
+
+ if (fpptr->initialized != FP_INIT_MAGIC) {
+ fp_msg ("Error: internal initialization error\n"); exit (-1);
+ }
+
+ tile[0] = 0;
+
+ /* by default, .fz suffix characters to be deleted from compressed file */
+ fpptr->delete_suffix = 1;
+
+ /* flags must come first and be separately specified
+ */
+ for (iarg = 1; iarg < argc; iarg++) {
+ if (argv[iarg][0] == '-' && strlen (argv[iarg]) == 2) {
+
+ if (argv[iarg][1] == 'F') {
+ fpptr->clobber++;
+ fpptr->delete_suffix = 0; /* no suffix in this case */
+
+ } else if (argv[iarg][1] == 'D') {
+ fpptr->delete_input++;
+
+ } else if (argv[iarg][1] == 'P') {
+ if (++iarg >= argc) {
+ fu_usage (); fu_hint (); exit (-1);
+ } else
+ strncpy (fpptr->prefix, argv[iarg], SZ_STR);
+
+ } else if (argv[iarg][1] == 'E') {
+ if (++iarg >= argc) {
+ fu_usage (); fu_hint (); exit (-1);
+ } else
+ strncpy (fpptr->extname, argv[iarg], SZ_STR);
+
+ } else if (argv[iarg][1] == 'S') {
+ fpptr->to_stdout++;
+
+ } else if (argv[iarg][1] == 'L') {
+ fpptr->listonly++;
+
+ } else if (argv[iarg][1] == 'C') {
+ fpptr->do_checksums = 0;
+
+ } else if (argv[iarg][1] == 'H') {
+ fu_help (); exit (0);
+
+ } else if (argv[iarg][1] == 'V') {
+ fp_version (); exit (0);
+
+ } else if (argv[iarg][1] == 'Z') {
+ fpptr->do_gzip_file++;
+
+ } else if (argv[iarg][1] == 'v') {
+ fpptr->verbose = 1;
+
+ } else if (argv[iarg][1] == 'O') {
+ if (++iarg >= argc) {
+ fu_usage (); fu_hint (); exit (-1);
+ } else
+ strncpy (fpptr->outfile, argv[iarg], SZ_STR);
+
+ } else {
+ fp_msg ("Error: unknown command line flag `");
+ fp_msg (argv[iarg]); fp_msg ("'\n");
+ fu_usage (); fu_hint (); exit (-1);
+ }
+
+ } else
+ break;
+ }
+
+ if (fpptr->extname[0] && (fpptr->clobber || fpptr->delete_input)) {
+ fp_msg ("Error: -E option may not be used with -F or -D\n");
+ fu_usage (); exit (-1);
+ }
+
+ if (fpptr->to_stdout && (fpptr->outfile[0] || fpptr->prefix[0]) ) {
+
+ fp_msg ("Error: -S option may not be used with -P or -O\n");
+ fu_usage (); exit (-1);
+ }
+
+ if (fpptr->outfile[0] && fpptr->prefix[0] ) {
+ fp_msg ("Error: -P and -O options may not be used together\n");
+ fu_usage (); exit (-1);
+ }
+
+ if (iarg >= argc) {
+ fp_msg ("Error: no FITS files to uncompress\n");
+ fu_usage (); exit (-1);
+ } else
+ fpptr->firstfile = iarg;
+
+ return(0);
+}
+
+int fu_usage (void)
+{
+ fp_msg ("usage: funpack [-E <HDUlist>] [-P <pre>] [-O <name>] [-Z] -v <FITS>\n");
+ fp_msg ("more: [-F] [-D] [-S] [-L] [-C] [-H] [-V] \n");
+ return(0);
+}
+
+int fu_hint (void)
+{
+ fp_msg (" `funpack -H' for help\n");
+ return(0);
+}
+
+int fu_help (void)
+{
+fp_msg ("funpack, decompress fpacked files. Version ");
+fp_version ();
+fu_usage ();
+fp_msg ("\n");
+
+fp_msg ("Flags must be separate and appear before filenames:\n");
+fp_msg (" -E <HDUlist> Unpack only the list of HDU names or numbers in the file.\n");
+fp_msg (" -P <pre> Prepend <pre> to create new output filenames.\n");
+fp_msg (" -O <name> Specify full output file name.\n");
+fp_msg (" -Z Recompress the output file with host GZIP program.\n");
+fp_msg (" -F Overwrite input file by output file with same name.\n");
+fp_msg (" -D Delete input file after writing output.\n");
+fp_msg (" -S Output uncompressed file to STDOUT file stream.\n");
+fp_msg (" -L List contents, files unchanged.\n");
+
+fp_msg (" -C Don't update FITS checksum keywords.\n");
+
+fp_msg (" -v Verbose mode; list each file as it is processed.\n");
+fp_msg (" -H Show this message.\n");
+fp_msg (" -V Show version number.\n");
+
+fp_msg (" \n<FITS> FITS files to unpack; enter '-' (a hyphen) to read from stdin.\n");
+fp_msg (" Refer to the fpack User's Guide for more extensive help.\n");
+ return(0);
+}