summaryrefslogtreecommitdiffstats
path: root/funtools/funtest/evmerge.c
diff options
context:
space:
mode:
Diffstat (limited to 'funtools/funtest/evmerge.c')
-rw-r--r--funtools/funtest/evmerge.c77
1 files changed, 0 insertions, 77 deletions
diff --git a/funtools/funtest/evmerge.c b/funtools/funtest/evmerge.c
deleted file mode 100644
index 6b7cebc..0000000
--- a/funtools/funtest/evmerge.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *
- * evmerge.c -- example program for merging user values into a table file
- *
- */
-#include <funtools.h>
-#include <word.h>
-
-#define MAXROW 8192
-
-typedef struct evstruct{
- double time;
- int time2;
-} *Ev, EvRec;
-
-int main (int argc, char **argv)
-{
- int i, got;
- char tbuf[SZ_LINE];
- Fun fun, fun2;
- Ev ebuf, ev;
-
- /* exit on gio errors */
- setgerror(2);
-
- /* make sure we have minimal arguments */
- if( argc < 4 )
- gerror(stderr, "usage: %s iname oname mergetype [columns]\n", argv[0]);
-
- /* open input file */
- if( !(fun = FunOpen(argv[1], "rc", NULL)) )
- gerror(stderr, "could not FunOpen input file: %s\n", argv[1]);
-
- /* open the output FITS image, inheriting params from input */
- if( !(fun2 = FunOpen(argv[2], "w", fun)) )
- gerror(stderr, "could not FunOpen output file: %s\n", argv[2]);
-
- /* "merge=[type]" merges original input columns with new ones, where type is:
- * update -- add new columns, update value of existing ones (same data type)
- * replace -- add new columns, replace data type and value of existing ones
- * append -- only add new columns, do not "replace" or "update" existing ones
- * If tbuf argument is NULL, no merging is performed -- only user-specified
- * columns are output.
- */
- if( isfalse(argv[3]) )
- *tbuf = '\0';
- else
- sprintf(tbuf, "merge=%s", argv[3]);
- FunColumnSelect(fun, sizeof(EvRec), tbuf,
- "time", "D", "rw", FUN_OFFSET(Ev, time),
- "time2", "J", "w", FUN_OFFSET(Ev, time2),
- NULL);
-
- /* activate specified columns -- these will be written to the output file */
- if( argc >= 5 )
- FunColumnActivate(fun, argv[4], NULL);
-
- /* get rows -- let routine allocate the row array */
- while( (ebuf = (Ev)FunTableRowGet(fun, NULL, MAXROW, NULL, &got)) ){
- /* process all rows */
- for(i=0; i<got; i++){
- /* point to the i'th row */
- ev = ebuf+i;
- ev->time2 = (int)(ev->time+.5);
- ev->time = -(ev->time/10.0);
- }
- /* write out this batch of rows with the new column */
- FunTableRowPut(fun2, (char *)ebuf, got, 0, NULL);
- /* free row data */
- if( ebuf ) free(ebuf);
- }
-
- /* clean up -- close output before input to perform flush automatically */
- FunClose(fun2);
- FunClose(fun);
- return(0);
-}