Ejemplo n.º 1
0
static CDFstatus ValidateCDR (vFILE *fp, Int32 offset, Logical debug)
{
  Int32 actualEncoding;
/*
  char copyRight[CDF_COPYRIGHT_LEN+1];
*/
  CDFstatus status;
 
  if (debug)
    printf("  Checking CDR...@%d\n", (int) offset);
  status = ReadCDR (fp, offset, 
                    CDR_RECORD, &CDR, NULL,
                    CDR_NULL);
  if (status != CDF_OK) return status;
  if (CDR.RecordType != CDR_)
    return QuitCDF ("CDF(CDR): record type is invalid ", offset,
                    4, 1, &(CDR.RecordType), 0, debug);
  if (CDR.RecordSize < CDR_BASE_SIZE ||
      (!PriorTo("2.5",CDR.Version,CDR.Release,CDR.Increment) && 
       CDR.RecordSize > CDR_MAX_SIZE))
    return QuitCDF ("CDF(CDR): record size is invalid ", offset,
                    4, 1, &(CDR.RecordSize), 0, debug);
  if (CDR.GDRoffset < 1) 
    return QuitCDF ("CDF(CDR): offset to GDR is invalid ", offset,
                    4, 1, &(CDR.GDRoffset), 0, debug);
  if (CDR.Version != 2)
    return QuitCDF ("CDF: version number is invalid ", offset,
                    4, 1, &(CDR.Version), 0, debug);
  if (CDR.Release < 0)
    return QuitCDF ("CDF: release number is invalid ", offset,
                    4, 1, &(CDR.Release), 0, debug);
  if (CDR.Increment < 0)
    return QuitCDF ("CDF: increment number is invalid ", offset,
                    4, 1, &(CDR.Increment), 0, debug);
  if (!ValidEncoding(CDR.Encoding,&actualEncoding)) 
    return QuitCDF ("CDF(CDR): encoding is invalid ", offset,
                    4, 1, &(CDR.Encoding), 0, debug);
/*
  for (i = 0; i < strlen(copyRight); ++i) 
    if (!Printable(copyRight[i])) 
      return QuitCDF ("CDF(CDR): copyright is invalid ",  offset,
                      0, copyRight), 0, debug);
*/
  return CDF_OK;
}
Ejemplo n.º 2
0
CDFstatus ValidateCDR (vFILE *fp, OFF_T offset, Logical debug)
{
    Int32 actualEncoding;
    /*
      char copyRight[CDF_COPYRIGHT_LEN+1];
    */
    int i;
    CDFstatus status;

    if (debug)
#if defined(win32)
        printf("  Checking CDR...@%I64d\n", offset);
#else
        printf("  Checking CDR...@%lld\n", offset);
#endif
    status = ReadCDR64 (fp, offset,
                        CDR_RECORD, &CDR, NULL,
                        CDR_NULL);
    if (status != CDF_OK) return status;
    if (CDR.RecordType != CDR_)
        return QuitCDF ("CDF: record type is invalid ",
                        4, 1, &(CDR.RecordType), 0, debug);
    if (CDR.RecordSize < CDR_BASE_SIZE64 ||
            CDR.RecordSize > CDR_MAX_SIZE64)
        return QuitCDF ("CDF: record size is invalid ",
                        8, 1, &(CDR.RecordSize), 0, debug);
    if (CDR.GDRoffset < 1)
        return QuitCDF ("CDF: offset to GDR is invalid ",
                        8, 1, &(CDR.GDRoffset), 0, debug);
    if (CDR.Version != 3)
        return QuitCDF ("CDF: version number is invalid ",
                        4, 1, &(CDR.Version), 0, debug);
    if (!ValidEncoding(CDR.Encoding,&actualEncoding))
        return QuitCDF ("CDF: encoding is invalid ",
                        4, 1, &(CDR.Encoding), 0, debug);
    /*
      for (i = 0; i < strlen(copyRight); ++i)
        if (!Printable(copyRight[i]))
          return QuitCDF ("CDF: copyright is invalid ", 0, 1, copyRight, 0, debug);
    */
    return CDF_OK;
}
Ejemplo n.º 3
0
static CDFstatus ValidateCDR (vFILE *fp, OFF_T offset, Logical debug)
{
    Int32 actualEncoding;
    int i;
    CDFstatus status;

    if (debug)
#if defined(win32) || defined(__MINGW32__)
        printf("  Checking CDR...@%I64d\n", offset);
#else
        printf("  Checking CDR...@%lld\n", offset);
#endif
    status = ReadCDR64 (fp, offset,
                        CDR_RECORD, &CDR, NULL,
                        CDR_NULL);
    if (status != CDF_OK) return status;
    if (CDR.RecordType != CDR_)
        return QuitCDF ("CDF: record type is invalid ", offset,
                        4, 1, &(CDR.RecordType), 0, debug);
    if (CDR.RecordSize < CDR_BASE_SIZE64 ||
            CDR.RecordSize > CDR_MAX_SIZE64)
        return QuitCDF ("CDF: record size is invalid ", offset,
                        8, 1, &(CDR.RecordSize), 0, debug);
    if (CDR.GDRoffset < 1)
        return QuitCDF ("CDF: offset to GDR is invalid ", offset,
                        8, 1, &(CDR.GDRoffset), 0, debug);
    if (CDR.Version != 3)
        return QuitCDF ("CDF: version number is invalid ", offset,
                        4, 1, &(CDR.Version), 0, debug);
    if (CDR.Release < 0)
        return QuitCDF ("CDF: release number is invalid ", offset,
                        4, 1, &(CDR.Release), 0, debug);
    if (CDR.Increment < 0)
        return QuitCDF ("CDF: increment number is invalid ", offset,
                        4, 1, &(CDR.Increment), 0, debug);
    if (!ValidEncoding(CDR.Encoding,&actualEncoding))
        return QuitCDF ("CDF: encoding is invalid ", offset,
                        4, 1, &(CDR.Encoding), 0, debug);
    return CDF_OK;
}