---------------------------------------------------------------------- * Exported functions * ---------------------------------------------------------------------- */ ---------------------------------------------------------------------- * Read support functions * ---------------------------------------------------------------------- */
| 353 | * Read support functions |
| 354 | * ---------------------------------------------------------------------- */ |
| 355 | p_ply ply_open(const char *name, p_ply_error_cb error_cb, |
| 356 | long idata, void *pdata) { |
| 357 | FILE *fp = NULL; |
| 358 | p_ply ply = ply_alloc(); |
| 359 | if (error_cb == NULL) error_cb = ply_error_cb; |
| 360 | if (!ply) { |
| 361 | error_cb(NULL, "Out of memory"); |
| 362 | return NULL; |
| 363 | } |
| 364 | ply->idata = idata; |
| 365 | ply->pdata = pdata; |
| 366 | ply->io_mode = PLY_READ; |
| 367 | ply->error_cb = error_cb; |
| 368 | if (!ply_type_check()) { |
| 369 | error_cb(ply, "Incompatible type system"); |
| 370 | free(ply); |
| 371 | return NULL; |
| 372 | } |
| 373 | assert(name); |
| 374 | fp = fopen(name, "rb"); |
| 375 | if (!fp) { |
| 376 | error_cb(ply, "Unable to open file"); |
| 377 | free(ply); |
| 378 | return NULL; |
| 379 | } |
| 380 | ply->fp = fp; |
| 381 | return ply; |
| 382 | } |
| 383 | |
| 384 | int ply_read_header(p_ply ply) { |
| 385 | assert(ply && ply->fp && ply->io_mode == PLY_READ); |
no test coverage detected