diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/digiphot/daophot/select/t_pfmerge.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'noao/digiphot/daophot/select/t_pfmerge.x')
-rw-r--r-- | noao/digiphot/daophot/select/t_pfmerge.x | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/noao/digiphot/daophot/select/t_pfmerge.x b/noao/digiphot/daophot/select/t_pfmerge.x new file mode 100644 index 00000000..f9f096e1 --- /dev/null +++ b/noao/digiphot/daophot/select/t_pfmerge.x @@ -0,0 +1,110 @@ +include <fset.h> + +# T_PFMERGE -- Merge photometry files written by PHOT, PSF, PEAK, GROUP, +# NSTAR or ALLSTAR into one photometry file. The fields ID, XCENTER, +# YCENTER, MAG, and MKSKY are read from each input file and written +# without change to the output file. The input files may be text files or +# binary ST tables files. The output file will have the same file type as the +# the first input file. The header of the output file will be the header +# of the first input file. + +procedure t_pfmerge () + +pointer inphotfiles # the input photometry files +pointer outphotfile # the output photometry file +bool verbose # verbose output ? + +int plist, lplist, infd, outfd, first_file, in_text, out_text +pointer sp, infname +bool clgetb() +int fstati(), fntopnb(), fntlenb(), fntgfnb(), access(), open() +pointer tbtopn() + +begin + # Set the standard output to flush on newline. + if (fstati (STDOUT, F_REDIR) == NO) + call fseti (STDOUT, F_FLUSHNL, YES) + + # Get some working memory. + call smark (sp) + call salloc (inphotfiles, SZ_FNAME, TY_CHAR) + call salloc (outphotfile, SZ_FNAME, TY_CHAR) + call salloc (infname, SZ_FNAME, TY_CHAR) + + # Get the various task parameters. + call clgstr ("inphotfiles", Memc[inphotfiles], SZ_FNAME) + call clgstr ("outphotfile", Memc[outphotfile], SZ_FNAME) + verbose = clgetb ("verbose") + + # Open the input file list and determine the file type of the first + # file. + plist = fntopnb (Memc[inphotfiles], NO) + lplist = fntlenb (plist) + if (lplist <= 0) { + call fntclsb (plist) + call sfree (sp) + return + } + if (fntgfnb (plist, Memc[infname], SZ_FNAME) == EOF) { + call fntclsb (plist) + call sfree (sp) + return + } else { + out_text = access (Memc[infname], 0, TEXT_FILE) + call fntrewb (plist) + } + + # Open the output file. + if (out_text == YES) + outfd = open (Memc[outphotfile], NEW_FILE, TEXT_FILE) + else + outfd = tbtopn (Memc[outphotfile], NEW_FILE, 0) + + # Loop over the list of input files + first_file = YES + while (fntgfnb (plist, Memc[infname], SZ_FNAME) != EOF) { + + # Print message. + if (verbose) { + call printf ("Merging photometry file %s into %s\n") + call pargstr (Memc[infname]) + call pargstr (Memc[outphotfile]) + } + + # Open the input file. + in_text = access (Memc[infname], 0, TEXT_FILE) + if (verbose && (in_text != out_text)) { + if (in_text == YES) + call eprintf ("File %s is not an ST table file.\n") + else + call eprintf ("File %s is not a text file.\n") + call pargstr (Memc[infname]) + } + if (in_text == YES) + infd = open (Memc[infname], READ_ONLY, TEXT_FILE) + else + infd = tbtopn (Memc[infname], READ_ONLY, 0) + + # Now merge the files. + call dp_pfmerge (infd, outfd, in_text, out_text, first_file) + + # Close the photometry file. + if (in_text == YES) + call close (infd) + else + call tbtclo (infd) + + first_file = NO + } + + # Close the output file. + if (out_text == YES) + call close (outfd) + else + call tbtclo (outfd) + + # Close the input file list. + call fntclsb (plist) + + call sfree(sp) +end |