uint8_t rawDataLoad0(RawData *raw_data, const RawFile *raw_file) { word_t flen; uint8_t *buff; uint32_t counter; CSTRING *fname_cstr; CBYTES *cbytes; fname_cstr = cstring_new(raw_file->file_name, LOC_RAW_0013); if(NULL_PTR == fname_cstr) { dbg_log(SEC_0132_RAW, 0)(LOGSTDOUT, "error:rawDataLoad: new fname string failed\n"); return RAW_FILE_FAIL; } cbytes = cbytes_new(0); if(NULL_PTR == cbytes) { cstring_free(fname_cstr); dbg_log(SEC_0132_RAW, 0)(LOGSTDOUT, "error:rawDataLoad: new cbytes failed\n"); return RAW_FILE_FAIL; } if(EC_FALSE == cdfs_read(raw_file->cdfs_md_id, fname_cstr, cbytes)) { cstring_free(fname_cstr); cbytes_free(cbytes); dbg_log(SEC_0132_RAW, 0)(LOGSTDOUT, "error:rawFileOpen: read file %s failed\n", (char *)raw_file->file_name); return RAW_FILE_FAIL; } buff = cbytes_buf(cbytes); counter = 0; flen = gdbGetWord(buff, &counter);/*get compressed data len from the first word*/ if(RAW_FILE_SUCC != rawDataUnCompress(raw_data, buff + counter, flen)) { cstring_free(fname_cstr); cbytes_free(cbytes); dbg_log(SEC_0132_RAW, 0)(LOGSTDOUT, "error:rawDataLoad: uncompress %ld bytes failed\n", flen); return RAW_FILE_FAIL; } cstring_free(fname_cstr); cbytes_free(cbytes); dbg_log(SEC_0132_RAW, 9)(LOGSTDOUT, "[DEBUG] rawDataLoad: uncompress %d bytes => %d bytes, rate = %.2f\n", flen, raw_data->cur_size, (flen + 0.0)/(raw_data->cur_size + 0.0)); return RAW_FILE_SUCC; }
static errno_t cdfs_readdir( struct uufile *f, struct dirent *dirp ) { iso_dir_entry e; size_t lastpos = f->pos; size_t ret = cdfs_read( f, &e, sizeof(iso_dir_entry) ); if( (ret <= 0) || (e.recordLength == 0) || (e.nameLength == 0) ) return ENOENT; f->pos = lastpos + e.recordLength; dirp->d_reclen = 0; dirp->d_ino = e.dataStartSector[0]; if( e.nameLength == 1 ) { // . if( e.name[0] == 0 ) { strcpy( dirp->d_name, "." ); dirp->d_namlen = 1; return 0; } // .. if( e.name[0] == 1 ) // . { strcpy( dirp->d_name, ".." ); dirp->d_namlen = 2; return 0; } } size_t nlen = e.nameLength + 1; if( nlen > sizeof(dirp->d_name) ) nlen = sizeof(dirp->d_name); strlcpy( dirp->d_name, e.name, nlen ); dirp->d_namlen = nlen - 1; return 0; }
int cmd_type(int ac, char **av) { int rc; int handle=0; block_t buf_blk=0; block_t blk; int readbyte; unsigned long pos; //display_puts("cdfs_open\n"); handle = cdfs_open(av[0]); if(handle<0) { dsp_open_error(handle); goto EXITCMD; } //display_puts("block_init\n"); blk = block_init(BLOCK_SHM_ID); if(blk==0) { display_puts("error:block_open\n"); goto EXITCMD; } //display_puts("block_alloc\n"); buf_blk = block_alloc(blk); if(buf_blk==0) { display_puts("rc="); sint2dec(handle,s); display_puts(s); goto EXITCMD; } char *buf=block_addr(blk,buf_blk); //display_puts("cdfs_read\n"); pos=0; readbyte=cdfs_read(handle,pos,BLOCK_SHM_ID,buf_blk,BLOCK_SIZE); if(readbyte<0) { display_puts("rc="); sint2dec(readbyte,s); display_puts(s); goto EXITCMD; } // display_puts("\n"); //syscall_wait(10); //dump(buf); int i; for(i=0;i<readbyte;i++) { display_putc(*buf); //syscall_wait(10); buf++; } //display_puts("\n"); //display_puts("-------\n"); //display_puts("len="); //sint2dec(readbyte,s); //display_puts(s); //display_puts("\n"); //syscall_wait(50); EXITCMD: if(handle>0) { //display_puts("cdfs_close\n"); rc = cdfs_close(handle); if(rc<0) { display_puts("rc="); sint2dec(rc,s); display_puts(s); } } if(buf_blk) { block_free(blk,buf_blk); } return 0; }
int cmd_exec(int ac, char **av) { int handle=0; int pgmid=0; block_t buf_blk=0; int rc; block_t blk; int readbyte; unsigned long pos; //display_puts("cdfs_open\n"); handle = cdfs_open(av[0]); if(handle<0) { dsp_open_error(handle); goto EXITCMD; } //display_puts("cdfs_stat\n"); char infobuf[sizeof(struct file_info)+CDFS_FULLPATH_MAXLENGTH]; struct file_info *info=(void*)infobuf; rc = cdfs_stat(handle,info,sizeof(infobuf)); if(rc<0) { display_puts("rc="); sint2dec(rc,s); display_puts(s); goto EXITCMD; } //display_puts("block_init\n"); blk = block_init(BLOCK_SHM_ID); if(blk==0) { display_puts("error:block_init\n"); goto EXITCMD; } //display_puts("block_alloc\n"); buf_blk = block_alloc(blk); if(buf_blk==0) { display_puts("error:block_alloc\n"); goto EXITCMD; } char *buf=block_addr(blk,buf_blk); char *pgname = get_filename(av[0]); //display_puts("pgm_alloc\n"); pgmid = environment_allocimage(pgname,info->size); if(pgmid<0) { display_puts("rc="); sint2dec(pgmid,s); display_puts(s); goto EXITCMD; } //display_puts("size="); //sint2dec(info->size,s); //display_puts(s); //display_puts("\n"); //display_puts("cdfs_read\n"); pos=0; for(;;) { readbyte=cdfs_read(handle,pos,BLOCK_SHM_ID,buf_blk,BLOCK_SIZE); if(readbyte<0) { break; } //display_puts(" readbyte="); //sint2dec(readbyte,s); //display_puts(s); rc=environment_loadimage(pgmid,buf,readbyte); if(rc<0) { display_puts(" loadimage rc="); sint2dec(rc,s); display_puts(s); goto EXITCMD; } pos += readbyte; } rc = program_exec(pgmid,ac, av); if(rc<0) { goto EXITCMD; } int exitcode; program_wait(&exitcode, MESSAGE_MODE_WAIT); EXITCMD: if(handle>0) { //display_puts("cdfs_close\n"); rc = cdfs_close(handle); if(rc<0) { display_puts("rc="); sint2dec(rc,s); display_puts(s); } } if(buf_blk) { block_free(blk,buf_blk); } //display_puts("\n"); //syscall_wait(10); //dump(buf); return 0; }