| getfat_c |
|
Table of contents
Procedure
getfat_c ( Get file architecture and type )
void getfat_c ( ConstSpiceChar * file,
SpiceInt arclen,
SpiceInt kertln,
SpiceChar * arch,
SpiceChar * kertyp )
AbstractDetermine the file architecture and file type of most SPICE kernel files. Required_ReadingNone. KeywordsKERNEL UTILITY Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- file I The name of a file to be examined. arclen I Maximum length of output architecture string. kertln I Maximum length of output `kertyp' string. arch O The architecture of the kernel file. kertyp O The type of the kernel file. Detailed_Input
file is the name of a SPICE kernel file whose architecture
and type are desired. This file must be closed when
this routine is called.
arclen is the maximum length of output architecture string
`arch', including the terminating null. For example, if
`arch' is to hold strings having 10 characters of actual
data, `arclen' should be set to 11.
kertln is the maximum length of output file type string `kertyp',
including the terminating null. For example, if `kertyp'
is to hold strings having 10 characters of actual data,
`kertln' should be set to 11.
Detailed_Output
arch is the file architecture of the SPICE kernel file
specified by `file'. If the architecture cannot be
determined or is not recognized the value "?" is
returned.
Architectures currently recognized are:
DAF -- The file is based on the DAF architecture.
DAS -- The file is based on the DAS architecture.
XFR -- The file is in a SPICE transfer file format.
DEC -- The file is an old SPICE decimal text file.
ASC -- An ASCII text file.
KPL -- Kernel Pool File (i.e., a text kernel)
TXT -- An ASCII text file.
TE1 -- Text E-Kernel type 1.
? -- The architecture could not be determined.
This variable must be at least 3 characters long.
kertyp is the type of the SPICE kernel file. If the type
can not be determined the value "?" is returned.
Kernel file types may be any sequence of at most four
printing characters. NAIF has reserved for its use
types which contain all upper case letters.
A file type of "PRE" means that the file is a
pre-release file.
This variable may be at most 4 characters long.
ParametersNone. Exceptions
1) If the filename specified is blank, the error
SPICE(BLANKFILENAME) is signaled by a routine in the call tree
of this routine.
2) If any inquire on the filename specified by `file', required to
obtain information about the physical file, fails for some
reason, the error SPICE(INQUIREERROR) is signaled by a routine
in the call tree of this routine.
3) If the file specified by `file' does not exist, the error
SPICE(FILENOTFOUND) is signaled by a routine in the call tree
of this routine.
4) If the file specified by `file' is already open but not through
SPICE interfaces, the error SPICE(EXTERNALOPEN) is signaled by
a routine in the call tree of this routine.
5) If an attempt to open the file specified by `file' fails when
this routine requires that it succeed, the error
SPICE(FILEOPENFAILED) is signaled by a routine in the call
tree of this routine.
6) If an attempt to read the file specified by `file' fails when
this routine requires that it succeed, the error
SPICE(FILEREADFAILED) is signaled by a routine in the call
tree of this routine.
7) If an issue is detected during the opening the input file or
the process to determine its architecture and type, an error
is signaled by a routine in the call tree of this routine.
8) If the ID word in a DAF based kernel is "NAIF/DAF", then the
algorithm getfat_c uses to distinguish between CK and SPK
kernels may result in an indeterminate `kertyp' if the SPK or
CK files have invalid first segments.
9) If the `file' input string pointer is null, the error
SPICE(NULLPOINTER) is signaled.
10) If the `file' input string has zero length, the error
SPICE(EMPTYSTRING) is signaled.
11) If any of the `arch' or `kertyp' output string pointers is
null, the error SPICE(NULLPOINTER) is signaled.
12) If any of the `arch' or `kertyp' output strings has length
less than two characters, the error SPICE(STRINGTOOSHORT) is
signaled, since the output string is too short to contain one
character of output data plus a null terminator.
FilesThe SPICE kernel file specified by `file' is opened and then closed by this routine to determine its file architecture and type. Filenames of open files should not be passed to this routine. ParticularsThis subroutine is a support utility routine that determines the architecture and type of a SPICE kernel file. Examples
The numerical results shown for this example may differ across
platforms. The results depend on the SPICE kernels used as
input, the compiler and supporting libraries, and the machine
specific arithmetic implementation.
1) Determine the file architecture and file type of all the
kernels loaded through a meta-kernel and of a kernel in
transfer format.
Use the SPK kernel below to provide an example of a kernel in
transfer format.
earthstns_itrf93_050714.xsp
Use the meta-kernel shown below to load the other types of
SPICE kernels.
KPL/MK
File: getfat_ex1.tm
This meta-kernel is intended to support operation of SPICE
example programs. The kernels shown here should not be
assumed to contain adequate or correct versions of data
required by SPICE-based user applications.
In order for an application to use this meta-kernel, the
kernels referenced here must be present in the user's
current working directory.
The names and contents of the kernels referenced
by this meta-kernel are as follows:
File name Contents
--------- --------
de430.bsp Planetary ephemeris
mar097.bsp Mars satellite ephemeris
pck00010.tpc Planet orientation and
radii
naif0011.tls Leapseconds
mgs_moc_v20.ti MGS MOC instrument
parameters
mgs_sclkscet_00061.tsc MGS SCLK coefficients
mgs_sc_ext12.bc MGS s/c bus attitude
mgs_ext12_ipng_mgs95j.bsp MGS ephemeris
megr90n000cb_plate.bds Plate model based on
MEGDR DEM, resolution
4 pixels/degree.
\begindata
KERNELS_TO_LOAD = ( 'de430.bsp',
'mar097.bsp',
'pck00010.tpc',
'naif0011.tls',
'mgs_moc_v20.ti',
'mgs_sclkscet_00061.tsc',
'mgs_sc_ext12.bc',
'mgs_ext12_ipng_mgs95j.bsp',
'megr90n000cb_plate.bds' )
\begintext
End of meta-kernel
Example code begins here.
/.
Program getfat_ex1
./
#include <stdio.h>
#include "SpiceUsr.h"
int main( )
{
/.
Local parameters.
./
#define ARCHLN 4
#define FILSIZ 256
#define KTYPLN 5
/.
Local variables.
./
SpiceBoolean found;
SpiceChar arch [ ARCHLN ];
SpiceChar fname [ FILSIZ ];
SpiceChar * fname1;
SpiceChar ktype [ KTYPLN ];
SpiceChar source [ FILSIZ ];
SpiceInt count;
SpiceInt handle;
SpiceInt i;
/.
Check the file architecture and type of an SPK
in transfer format.
./
fname1 = "earthstns_itrf93_050714.xsp";
getfat_c ( fname1, ARCHLN, KTYPLN, arch, ktype );
printf ( "File name : %s\n", fname1 );
printf ( " Architecture: %s\n", arch );
printf ( " Kernel type : %s\n\n", ktype );
/.
Load the kernels.
./
furnsh_c ( "getfat_ex1.tm" );
/.
Get the file architecture and kernel type for each of
the kernels in the kernel pool.
./
ktotal_c ( "ALL", &count );
for ( i = 0; i < count; i++ )
{
kdata_c ( i, "ALL", FILSIZ, KTYPLN, FILSIZ,
fname, ktype, source, &handle, &found );
getfat_c ( fname, ARCHLN, KTYPLN, arch, ktype );
printf ( "File name : %s\n", fname );
printf ( " Source : %s\n", source );
printf ( " Architecture: %s\n", arch );
printf ( " Kernel type : %s\n\n", ktype );
}
return ( 0 );
}
When this program was executed on a Mac/Intel/cc/64-bit
platform, the output was:
File name : earthstns_itrf93_050714.xsp
Architecture: XFR
Kernel type : DAF
File name : getfat_ex1.tm
Source :
Architecture: KPL
Kernel type : MK
File name : de430.bsp
Source : getfat_ex1.tm
Architecture: DAF
Kernel type : SPK
File name : mar097.bsp
Source : getfat_ex1.tm
Architecture: DAF
Kernel type : SPK
File name : pck00010.tpc
Source : getfat_ex1.tm
Architecture: KPL
Kernel type : PCK
File name : naif0011.tls
Source : getfat_ex1.tm
Architecture: KPL
Kernel type : LSK
File name : mgs_moc_v20.ti
Source : getfat_ex1.tm
Architecture: KPL
Kernel type : IK
File name : mgs_sclkscet_00061.tsc
Source : getfat_ex1.tm
Architecture: KPL
Kernel type : SCLK
File name : mgs_sc_ext12.bc
Source : getfat_ex1.tm
Architecture: DAF
Kernel type : CK
File name : mgs_ext12_ipng_mgs95j.bsp
Source : getfat_ex1.tm
Architecture: DAF
Kernel type : SPK
File name : megr90n000cb_plate.bds
Source : getfat_ex1.tm
Architecture: DAS
Kernel type : DSK
Restrictions
1) In order to properly determine the type of DAF based binary
kernels, the routine requires that their first segments and
the meta data necessary to address them are valid.
Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) Version
-CSPICE Version 1.1.0, 10-AUG-2021 (JDR)
Changed argument names "typlen" and "type" to "kertln" and
"kertyp" for consistency with other routines.
Edited the header to comply with NAIF standard.
Added complete code example to -Examples section. Updated
-Exceptions and -Restrictions sections.
-CSPICE Version 1.0.0, 18-AUG-1998 (NJB)
Index_Entriesdetermine the architecture and type of a kernel file |
Fri Dec 31 18:41:07 2021