int pdfout_data_cmp (fz_context *ctx, pdfout_data *x, pdfout_data *y) { if (x->type != y->type) return 1; if (x->type == ARRAY) return cmp_array (ctx, x, y); else if (x->type == HASH) return cmp_hash (ctx, x, y); data_scalar *a = to_scalar (ctx, x); data_scalar *b = to_scalar (ctx, y); if (a->len == b->len && memcmp (a->value, b->value, a->len) == 0) return 0; else return 1; }
/** * Recvs next frame from socket */ static bool get_frame(int sock, network_data_t * nd) { char buffer[FRAME_SIZE+1]; int r = read_raw(sock,buffer,FRAME_SIZE, 0, &nd->addr); if(r != FRAME_SIZE) { fprintf(stderr,"Invalid frame size recived\n"); nd->invalidate(); return false; } if(cmp_hash(buffer,buffer+HASH_SIZE,PAYLOAD_SIZE)) { memcpy(nd->data,buffer+HASH_SIZE,PAYLOAD_SIZE); return true; } else { fprintf(stderr,"Incorrect hash for frame.\n"); nd->invalidate(); return false; } }