Index Page dafec_c

A B C D E F G H I J K L M N O P Q R S T U V W X

Procedure Abstract Required_Reading Keywords Brief_I/O Detailed_Input | Detailed_Output Parameters Exceptions Files Particulars Examples | Restrictions Literature_References Author_and_Institution Version Index_Entries

#### Procedure

       void dafec_c ( SpiceInt          handle,
                      SpiceInt          bufsiz,
                      SpiceInt          lenout,
                      SpiceInt        * n,
                      void            * buffer,
                      SpiceBoolean    * done    )

#### Abstract

       Extract comments from the comment area of a binary DAF.

#### Required_Reading

       DAF

#### Keywords

       FILES
       UTILITY

#### Brief_I/O

       Variable  I/O  Description
       --------  ---  --------------------------------------------------
        handle    I   Handle of binary DAF opened with read access.
        bufsiz    I   Maximum size, in lines, of buffer.
        lenout    I   Length of strings in output buffer.
        n         O   Number of extracted comment lines.
        buffer    O   Buffer where extracted comment lines are placed.
        done      O   Indicates whether all comments have been extracted.

#### Detailed_Input

       handle   is the file handle of a binary DAF which has been opened with
                read access.

       bufsiz   is the maximum number of comments that may be placed into
                buffer. This would typically be the declared array size for
                the Fortran character string array passed into this
                routine.

       lenout   is the allowed length of each string element of the output
                buffer. This length must large enough to hold the longest
                output string plus the null terminator.  The SPICE system
                imposes no limit on the length of comment lines, so `lenout'
                normally should be set to a "generous" value that is unlikely
                to be exceeded.

#### Detailed_Output

       n        is the number of comment lines extracted from the comment area
                of the binary DAF associated with `handle'.  `n' will be
                less than or equal to `bufsiz' on output.

       buffer   is an array containing comment lines read from the DAF
                associated with `handle'.  `buffer' should be declared

                   SpiceChar  buffer[bufsiz][lenout];

                On output, the first `n' strings of `buffer' will contain
                comment text, with one comment line per string.

       done     is a logical flag indicating whether or not all of the
                comment lines from the comment area of the DAF have
                been read. This variable has the value SPICETRUE after the
                last comment line has been read. It will have the value
                SPICEFALSE otherwise.

                If there are no comments in the comment area, this
                variable will have the value SPICETRUE.

#### Parameters

       None.

#### Exceptions

       1)   If the size of the output line buffer is is not positive,
            the error SPICE(INVALIDARGUMENT) will be signaled.

       3)   If a comment line in a DAF is longer than the length
            of a character string array element of BUFFER, the error
            SPICE(COMMENTTOOLONG) will be signaled.

       3)   If the end of the comments cannot be found, i.e., the end of
            comments marker is missing on the last comment record, the
            error SPICE(BADCOMMENTAREA) will be signaled.

       4)   If the number of comment characters scanned exceeds the
            number of comment characters computed, the error
            SPICE(BADCOMMENTAREA) will be signaled.

       5)   If the binary DAF attached to HANDLE is not open for
            reading,an error will be signaled by a routine called by
            this routine.

       6)   If the output buffer pointer is null the error SPICE(NULLPOINTER)
            will be signaled.

       7)   If the output buffer string length is less than 2, the error
            SPICE(STRINGTOOSHORT) will be signaled.

#### Files

       See argument `handle' in $ Detailed_Input.

#### Particulars

       A binary DAF contains an area which is reserved for storing
       annotations or descriptive textual information describing the data
       contained in a file. This area is referred to as the ``comment
       area'' of the file. The comment area of a DAF is a line
       oriented medium for storing textual information. The comment
       area preserves any leading or embedded white space in the line(s)
       of text which are stored, so that the appearance of the of
       information will be unchanged when it is retrieved (extracted) at
       some other time. Trailing blanks, however, are NOT preserved,
       due to the way that character strings are represented in
       standard Fortran 77.

       This routine will read the comments from the comment area of
       a binary DAF, placing them into a line buffer. If the line
       buffer is not large enough to hold the entire comment area,
       the portion read will be returned to the caller, and the DONE
       flag will be set to SPICEFALSE. This allows the comment area to be
       read in ``chunks,'' a buffer at a time. After all of the comment
       lines have been read, the `done' flag will be set to SPICETRUE.

       This routine can be used to ``simultaneously'' extract comments
       from the comment areas of multiple binary DAFs. See Example
       2 in the $ Examples section.

#### Examples

       1) The following example will extract the entire comment area of a
          binary DAF, displaying the comments on the terminal screen.

          #include <stdio.h>
          #include "SpiceUsr.h"

          int main()
          {
             #define FILSIZ          256
             #define LINLEN          1001
             #define BUFFSZ          25

             SpiceBoolean            done = SPICEFALSE;

             SpiceChar               daf    [FILSIZ];
             SpiceChar               buffer [BUFFSZ][LINLEN];

             SpiceInt                handle;
             SpiceInt                i;
             SpiceInt                n;

             prompt_c ( "Enter name of DAF > ", FILSIZ, daf );

             dafopr_c ( daf, &handle );

             while ( !done )
             {
                dafec_c ( handle, BUFFSZ, LINLEN, &n, buffer, &done );

                for ( i = 0;  i < n;  i++ )
                {
                   printf ( "%s\n", buffer[i] );
                }
             }

             return ( 0 );
          }

#### Restrictions

       1) The comment area may consist only of printing ASCII characters,
          decimal values 32 - 126.

       2) There is NO maximum length imposed on the significant portion
          of a text line that may be placed into the comment area of a
          DAF. The maximum length of a line stored in the comment area
          should be kept reasonable, so that they may be easily
          extracted. A good value for this might be 1000 characters, as
          this can easily accommodate ``screen width'' lines as well as
          long lines which may contain some other form of information.

       3) This routine is only used to read records on environments
          whose characters are a single byte in size.  Updates
          to this routine and routines in its call tree may be
          required to properly handle other cases.

#### Literature_References

       None.

#### Author_and_Institution

       N.J. Bachman   (JPL)
       K.R. Gehringer (JPL)

#### Version

       -CSPICE Version 1.0.0, 16-NOV-2006 (NJB) (KRG)

#### Index_Entries

        extract comments from a DAF

#### Link to routine dafec_c source file dafec_c.c

    Wed Apr  5 17:54:30 2017