// ecrire l'header à la fin du fichier. Cette fonction appelle toutes les autres situées ci dessus ! int write_audio_cdi_header(FILE *cdi, char* cdiname, char* volume_name, long data_sector_count, long total_cdi_space_used) { struct cdi_header head; unsigned long cdi_end_image_tracks; cdi_end_image_tracks = ftell(cdi); // emplacement de l'header // en tête head.track_count = 0x02; head.first_track_num = 0x01; head.padding = 0x00000000; #ifdef WIN32 get_full_filename(cdiname, cdiname); // on remplace l'ancien nom relatif par le nom absolu #endif // ecrire le début de l'header fwrite(&head, sizeof(head), 1, cdi); // sector 1 (audio) write_cdi_header_start(cdi, cdiname); write_array_block(cdi, sector1_size, sector1_entries, sector1); // sector 2 (data) write_cdi_header_start(cdi, cdiname); write_cdi_head_data_sector(cdi, data_sector_count); // sector 3 (fin de l'header) write_cdi_header_start(cdi, cdiname); write_cdi_head_end(cdi, volume_name, total_cdi_space_used, cdi_end_image_tracks); }
/// Close the current file, if one is open, and open a new file for data output bool PollOutputFile::OpenNewFile(std::string title_, int &run_num_, std::string prefix, std::string output_directory/*="./"*/, bool continueRun /*= false*/){ CloseFile(); // Restart the spill counter for the new file number_spills = 0; std::string filename = GetNextFileName(run_num_,prefix,output_directory,continueRun); output_file.open(filename.c_str(), std::ios::binary); if(!output_file.is_open() || !output_file.good()){ output_file.close(); return false; } current_filename = filename; get_full_filename(current_full_filename); if(output_format == 0){ dirBuff.SetRunNumber(run_num_); dirBuff.Write(&output_file); // Every .ldf file gets a DIR header headBuff.SetTitle(title_); headBuff.SetDateTime(); headBuff.SetRunNumber(run_num_); headBuff.Write(&output_file); // Every .ldf file gets a HEAD file header } else if(output_format == 1){ pldHead.SetTitle(title_); pldHead.SetRunNumber(run_num_); pldHead.SetStartDateTime(); // Write a blank header for now and overwrite it later int temp = 0; for(int i = 0; i < pldHead.GetBufferLength()/4; i++){ output_file.write((char*)&temp, 4); } temp = -1; output_file.write((char*)&temp, 4); // Close the buffer } else{ if(debug_mode){ std::cout << "debug: invalid output format for PollOutputFile::OpenNewFile!\n"; } return false; } return true; }
static void start() { memset(&songinfo, 0, sizeof(SONGINFO)); read_song_info_for_song(&(songlist.list[current_song_index]), &songinfo); assert(f_open( &file, get_full_filename(songlist.list[current_song_index].filename), FA_OPEN_EXISTING|FA_READ) == FR_OK); iprintf("title: %s\n", songinfo.title); iprintf("artist: %s\n", songinfo.artist); iprintf("album: %s\n", songinfo.album); iprintf("skipping: %i\n", songinfo.data_start); f_lseek(&file, songinfo.data_start); if (songinfo.type != UNKNOWN) { //assert(f_open( &file, get_full_filename(fileinfo.fname), FA_OPEN_EXISTING|FA_READ) == FR_OK); //puts("File opened."); switch(songinfo.type) { case AAC: aac_alloc(); aac_reset(); break; case MP4: aac_alloc(); aac_reset(); aac_setup_raw(); break; case MP3: mp3_alloc(); mp3_reset(); break; } puts("playing"); malloc_stats(); state = PLAYING; } else { puts("unknown file type"); stop(); } }
static int cli_open_append (CMD *cmd, DATASET *dset, MODEL *model, PRN *prn) { gretlopt opt = cmd->opt; PRN *vprn = prn; char newfile[MAXLEN] = {0}; char response[3]; int http = 0, dbdata = 0; int ftype; int err = 0; if (opt & OPT_K) { /* --frompkg=whatever */ err = get_package_data_path(cmd->param, newfile); if (err) { errmsg(err, prn); return err; } } else { err = cli_try_http(cmd->param, newfile, &http); if (err) { errmsg(err, prn); return err; } if (!http && !(opt & OPT_O)) { /* not using http or ODBC */ err = get_full_filename(cmd->param, newfile, (opt & OPT_W)? OPT_W : OPT_NONE); if (err) { errmsg(err, prn); return err; } } } if (opt & OPT_W) { ftype = GRETL_NATIVE_DB_WWW; } else if (opt & OPT_O) { ftype = GRETL_ODBC; } else { ftype = detect_filetype(newfile, OPT_P); } dbdata = (ftype == GRETL_NATIVE_DB || ftype == GRETL_NATIVE_DB_WWW || ftype == GRETL_RATS_DB || ftype == GRETL_PCGIVE_DB || ftype == GRETL_ODBC); if (data_status && !batch && !dbdata && cmd->ci != APPEND && strcmp(newfile, datafile)) { fprintf(stderr, _("Opening a new data file closes the " "present one. Proceed? (y/n) ")); if (fgets(response, sizeof response, stdin) != NULL && *response != 'y' && *response != 'Y') { pprintf(prn, _("OK, staying with current data set\n")); return 0; } } if (!dbdata && cmd->ci != APPEND) { cli_clear_data(cmd, dset, model); } if (opt & OPT_Q) { /* --quiet, but in case we hit any problems below... */ vprn = gretl_print_new(GRETL_PRINT_BUFFER, NULL); } if (ftype == GRETL_XML_DATA || ftype == GRETL_BINARY_DATA) { err = gretl_read_gdt(newfile, dset, opt, vprn); } else if (ftype == GRETL_CSV) { err = import_csv(newfile, dset, opt, vprn); } else if (SPREADSHEET_IMPORT(ftype)) { err = import_spreadsheet(newfile, ftype, cmd->list, cmd->parm2, dset, opt, vprn); } else if (OTHER_IMPORT(ftype)) { err = import_other(newfile, ftype, dset, opt, vprn); } else if (ftype == GRETL_ODBC) { err = set_odbc_dsn(cmd->param, vprn); } else if (dbdata) { err = set_db_name(newfile, ftype, vprn); } else { err = gretl_get_data(newfile, dset, opt, vprn); } if (vprn != prn) { if (err) { /* The user asked for --quiet operation, but something went wrong so let's print any info we got on vprn. */ const char *buf = gretl_print_get_buffer(vprn); if (buf != NULL && *buf != '\0') { pputs(prn, buf); } } else { /* print minimal success message */ pprintf(prn, _("Read datafile %s\n"), newfile); } gretl_print_destroy(vprn); } if (err) { errmsg(err, prn); return err; } if (!dbdata && !http && cmd->ci != APPEND) { strncpy(datafile, newfile, MAXLEN - 1); } data_status = 1; if (dset->v > 0 && !dbdata && !(opt & OPT_Q)) { varlist(dset, prn); } if (http) { remove(newfile); } return err; }