summaryrefslogtreecommitdiffstats
path: root/funtools/funtest/bigfits.c
diff options
context:
space:
mode:
Diffstat (limited to 'funtools/funtest/bigfits.c')
-rw-r--r--funtools/funtest/bigfits.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/funtools/funtest/bigfits.c b/funtools/funtest/bigfits.c
new file mode 100644
index 0000000..1762be4
--- /dev/null
+++ b/funtools/funtest/bigfits.c
@@ -0,0 +1,87 @@
+/*
+ *
+ * bigfits -- test large file creation
+ *
+ * gcc -g -o bigfits -I $HOME/include -L$HOME/lib bigfits.c -lfuntools
+ *
+ * gcc -g -o bigfits -I $HOME/include -L$HOME/lib bigfits.c -lfuntools -lm -lsocket -ldl -lnsl
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <funtools.h>
+
+#define MAXX 100
+#define MAXY 100
+#define MAXREC (MAXX*MAXY)
+
+typedef struct EvStruct{
+ unsigned int n;
+ short x, y;
+ unsigned short block;
+} *Event, EventRec;
+
+int main(int argc, char **argv)
+{
+ int i, j, n;
+ int put;
+ unsigned int total=0;
+ char *oname;
+ Fun fun;
+ EventRec events[MAXREC];
+ Event ev;
+
+ /* exit on gio errors */
+ setgerror(2);
+
+ if( argc < 3 ){
+ fprintf( stderr, "usage: %s oname n\n", argv[0]);
+ exit(1);
+ }
+ oname = argv[1];
+ n = atoi(argv[2]);
+
+ fprintf(stderr, "writing 10 bytes * %d groups of records * %d times\n",
+ MAXREC, n);
+
+ /* fill in the records */
+ for(j=0; j<MAXY; j++){
+ for(i=0; i<MAXX; i++){
+ ev = &events[j*MAXY+i];
+ ev->x = i;
+ ev->y = j;
+ ev->n = total++;
+ }
+ }
+
+ /* open output file */
+ if( !(fun = FunOpen(oname,"w", NULL)) )
+ gerror(stderr, "Could not open the output file: %s\n", oname);
+
+ /* set up the (hardwired) columns */
+ FunColumnSelect( fun, sizeof(EventRec), NULL,
+ "x", "I:0:99", "w", FUN_OFFSET(Event, x),
+ "y", "I:0:99", "w", FUN_OFFSET(Event, y),
+ "block","I", "w", FUN_OFFSET(Event, block),
+ "n", "J", "w", FUN_OFFSET(Event, n),
+ NULL);
+
+
+ /* write n * MAXREC records */
+ for(i=0; i<n; i++){
+ /* set block count */
+ for(j=0; j<MAXREC; j++){
+ ev = &events[j];
+ ev->block = i;
+ }
+ if( (put=FunTableRowPut(fun, events, MAXREC, 0, NULL)) != MAXREC ){
+ gerror(stderr, "expected to write %d rows; only wrote %d\n",
+ MAXREC, put);
+ }
+ }
+
+ FunClose(fun);
+
+ return(0);
+}