From fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 8 Jul 2015 20:46:52 -0400 Subject: Initial commit --- pkg/xtools/mef/mefgnbc.x | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 pkg/xtools/mef/mefgnbc.x (limited to 'pkg/xtools/mef/mefgnbc.x') diff --git a/pkg/xtools/mef/mefgnbc.x b/pkg/xtools/mef/mefgnbc.x new file mode 100644 index 00000000..2d370893 --- /dev/null +++ b/pkg/xtools/mef/mefgnbc.x @@ -0,0 +1,55 @@ +include + +# MEF_GNBC -- Get the Number of Blank Cards in a FITS header pointed by +# mef. This is the number of cards available to insert before an expantion by +# one block is required. If the header has not being read and EOF (-2) is +# returned. + +int procedure mef_gnbc (mef) + +pointer mef + +int len, hd, ip, nbc, hsize, k, ncards +int strlen(), strncmp() + +begin + if (MEF_HDRP(mef) == NULL) + return (EOF) + + hd = MEF_HDRP(mef) + len = strlen(Memc[hd]) + + # Go to the end of buffer and get last line + + ip = hd + MEF_HSIZE(mef) - LEN_CARDNL + + # See if line is blank + + nbc = 0 + while (ip > 0) { + do k = 0, LEN_CARD-1 + if (Memc[ip+k] != ' ') + break + + if (k != LEN_CARD && k != 0) # blank keyw card + break + else if (k == 0) { + if (strncmp ("END ", Memc[ip], 8) == 0) { + ip = ip - LEN_CARDNL + next + } else + break + } else + nbc = nbc + 1 + ip = ip - LEN_CARDNL + } + + hsize = MEF_HSIZE(mef) + ncards = (hsize + 80)/81 + + ncards = ((ncards + 35)/36)*36 - ncards + nbc = nbc + ncards + + return (nbc) +end + -- cgit