static HPDF_STATUS Get3DStreamType (HPDF_Stream stream, const char **type) { HPDF_BYTE tag[4]; HPDF_UINT len; HPDF_PTRACE ((" HPDF_U3D_Get3DStreamType\n")); len = 4; if (HPDF_Stream_Read (stream, tag, &len) != HPDF_OK) { return HPDF_Error_GetCode (stream->error); } if (HPDF_Stream_Seek (stream, 0, HPDF_SEEK_SET) != HPDF_OK) { return HPDF_Error_GetCode (stream->error); } if (HPDF_MemCmp(tag, (HPDF_BYTE *)u3d, 4/* yes, \0 is required */) == 0) { *type = u3d; return HPDF_OK; } if (HPDF_MemCmp(tag, (HPDF_BYTE *)prc, 3) == 0) { *type = prc; return HPDF_OK; } return HPDF_INVALID_U3D_DATA; }
const char* HPDF_StrStr (const char *s1, const char *s2, HPDF_UINT maxlen) { HPDF_UINT len = HPDF_StrLen (s2, -1); if (!s1) return NULL; if (len == 0) return s1; if (maxlen == 0) maxlen = HPDF_StrLen (s1, -1); if (maxlen < len) return NULL; maxlen -= len; maxlen++; while (maxlen > 0) { if (HPDF_MemCmp ((HPDF_BYTE *)s1, (HPDF_BYTE *)s2, len) == 0) return s1; s1++; maxlen--; } return NULL; }