/* return IS_???_FILE (smfconv.h) */ static int is_midifile_url(URL url) { char buffer[1024]; long len; int i; len=url_nread(url,buffer,100); for(i=0; is_midifile_check[i].type!=IS_OTHER_FILE; i++) { if(len<is_midifile_check[i].len) continue; if(memcmp(buffer,is_midifile_check[i].header,is_midifile_check[i].len)==0) return is_midifile_check[i].type; } return IS_OTHER_FILE; }
/* return allocated memory void pointer */ static void *url2mem(URL url,long *lenp) { #define URL2MEM_BUFFER_BLOCK_SIZE 10240 char *buffer = NULL; long buffer_size = 0; long buffer_size2 = 0; long ret; for(;;) { if(buffer_size2 < buffer_size + URL2MEM_BUFFER_BLOCK_SIZE) { if((buffer = (char *)safe_realloc(buffer,buffer_size2 + URL2MEM_BUFFER_BLOCK_SIZE))==NULL) return NULL; buffer_size2+=URL2MEM_BUFFER_BLOCK_SIZE; } ret=url_nread(url,buffer+buffer_size,URL2MEM_BUFFER_BLOCK_SIZE); if(ret<0) break; buffer_size+=ret; if(ret<URL2MEM_BUFFER_BLOCK_SIZE) break; } *lenp = buffer_size; return (void *)buffer; }
int _mm_read_string (CHAR * buffer, int number, URL reader) { return url_nread (reader, buffer, number); }
long tf_read(void *buff, int32 size, int32 nitems, struct timidity_file *tf) { return url_nread(tf->url, buff, size * nitems) / size; }