201
const char *file_load(s_buffer_list *bf, const char *fname, long file_offset, long buffer_offset, long bytes_count )
201
const char *file_load(geepro *gep, const char *fname, long file_offset, long buffer_offset, long bytes_count )
204
204
int err = 0, x=0;
205
unsigned int dev_size;
208
if(!bf) return "No chip memory size specified.";
212
if( !data ) return NULL;
206
if(!gep->chp) return "No chip memory size specified.";
214
if( file_offset < 0 ) memset(data, 0xff, dev_size);
208
if( file_offset < 0 )
209
memset(gep->chp->buffer, 0xff, gep->chp->dev_size); // set buffer by 0xff
216
211
if(!(f = fopen(fname , "r-"))) return "Open file error.";
219
213
if( file_offset >= 0){
220
err = file_load_bin(f, dev_size, data, file_offset, buffer_offset, bytes_count);
214
err = file_load_bin(f, gep->chp->dev_size, gep->chp->buffer, file_offset, buffer_offset, bytes_count);
223
217
if((x = file_test_extension(f, fname, "hex")) == 2)
224
err = file_load_hex(f, dev_size, data);
218
err = file_load_hex(f, gep->chp->dev_size, gep->chp->buffer);
226
220
if((x = file_test_extension(f, fname, "srec")) == 2)
227
err = file_load_srec(f, dev_size, data);
221
err = file_load_srec(f, gep->chp->dev_size, gep->chp->buffer);
229
223
if((x = file_test_extension(f, fname, "s19")) == 2)
230
err = file_load_srec(f, dev_size, data);
224
err = file_load_srec(f, gep->chp->dev_size, gep->chp->buffer);
233
err = file_load_bin(f, dev_size, data, -1, -1, -1);
227
err = file_load_bin(f, gep->chp->dev_size, gep->chp->buffer, -1, -1, -1);
235
229
if(x == 0) return "Filename error."; // no fname or NULL
236
230
if(err == -10) err = 0; // end of HEX file, normal termination
346
const char *file_save(s_buffer_list *bf, const char *fname)
340
const char *file_save(geepro *gep, const char *fname)
350
int err = 0, x=0, size;
343
int err = 0, x=0, size = gep->chp->dev_size;
352
345
if(!fname) return "No file name";
353
346
if(fname[0] == 0) return "No file name";
358
if( !bf ) return NULL;
359
347
if( !size ) return "Buffer size is 0 bytes.";
361
for(; size && (((data[size - 1]) & 0xff) == 0xff); size--); // skraca bufor o puste 'FF'
348
for(; size && (((gep->chp->buffer[size - 1]) & 0xff) == 0xff); size--); // skraca bufor o puste 'FF'
349
if(!gep->chp) return "No chip memory size specified.";
363
350
if(!(f = fopen(fname , "w"))) return "Open file error.";
364
351
if((x = file_test_extension(f, fname, "hex")) == 2)
365
err = file_save_hex(f, size, data);
352
err = file_save_hex(f, size, gep->chp->buffer);
367
354
if((x = file_test_extension(f, fname, "srec")) == 2)
368
err = file_save_srec(f, size, data);
355
err = file_save_srec(f, size, gep->chp->buffer);
370
357
if((x = file_test_extension(f, fname, "s19")) == 2)
371
err = file_save_srec(f, size, data);
358
err = file_save_srec(f, size, gep->chp->buffer);
373
if(x == 1) err = file_save_bin(f, size, data);
360
if(x == 1) err = file_save_bin(f, size, gep->chp->buffer);
374
361
if(x == 0) return "Filename error."; // no fname or NULL
426
char file_ls(const char *path, const char *regex, char *error, file_ls_callback fcb, void *arg)
413
boolean file_ls(const char *path, const char *regex, char *error, file_ls_callback fcb, void *arg)
430
417
struct dirent *ep;
433
420
if( regcomp(&rgx, regex, REG_EXTENDED | REG_NOSUB) ){
434
421
sprintf( error, "regcomp() failed: Could not compile regex. { files.c -> file_regex_match() }\n");