static int disk_uninit (disk_t* disk) { int err = ERR_OK; uint32 i = 0; uint32 ntracks = ptrvec_get_count(disk->tracks); uint32 ntags = ptrvec_get_count(disk->tags); uint32 npicts = ptrvec_get_count(disk->picts); for (i = 0; i < npicts; ++i) { pict_t* pic = (pict_t*)ptrvec_get_item(disk->picts, i); err = pict_delete(pic); } for (i = 0; i < ntags; ++i) { tag_t* tag = (tag_t*)ptrvec_get_item(disk->tags, i); err = tag_delete(tag); } for (i = 0; i < ntracks; ++i) { track_t* track = (track_t*)ptrvec_get_item(disk->tracks, i); err = track_delete(track); } err = ptrvec_delete(disk->picts); err = ptrvec_delete(disk->tags); err = ptrvec_delete(disk->tracks); free(disk->fname); return err; }
static void flytec_delete(flytec_t *flytec) { if (flytec) { snp_delete(flytec->snp); if (flytec->trackv) { track_t **track; for (track = flytec->trackv; *track; ++track) track_delete(*track); free(flytec->trackv); } if (close(flytec->fd) == -1) DIE("close", errno); free(flytec->pilot_name); free(flytec); } }
static track_t * track_new(const char *p) { track_t *track = xmalloc(sizeof(track_t)); memset(track, 0, sizeof *track); p = match_literal(p, "PBRTL,"); p = match_unsigned(p, &track->count); p = match_char(p, ','); p = match_unsigned(p, &track->index); p = match_char(p, ','); struct tm tm; memset(&tm, 0, sizeof tm); p = match_unsigned(p, &tm.tm_mday); p = match_char(p, '.'); p = match_unsigned(p, &tm.tm_mon); p = match_char(p, '.'); p = match_unsigned(p, &tm.tm_year); p = match_char(p, ','); p = match_unsigned(p, &tm.tm_hour); p = match_char(p, ':'); p = match_unsigned(p, &tm.tm_min); p = match_char(p, ':'); p = match_unsigned(p, &tm.tm_sec); p = match_char(p, ','); int duration_hour = 0, duration_min = 0, duration_sec = 0; p = match_unsigned(p, &duration_hour); p = match_char(p, ':'); p = match_unsigned(p, &duration_min); p = match_char(p, ':'); p = match_unsigned(p, &duration_sec); p = match_eos(p); if (!p) { track_delete(track); return 0; } tm.tm_mon -= 1; tm.tm_year += 2000 - 1900; track->date = DATE_NEW(tm); track->time = mktime(&tm); if (track->time == (time_t) -1) DIE("mktime", errno); track->duration = 3600 * duration_hour + 60 * duration_min + duration_sec; return track; }
void cd_delete(struct Cd* cd) { int i = 0; if (cd != NULL) { free(cd->catalog); free(cd->cdtextfile); for (i = 0; i < cd->ntrack; i++) track_delete(cd->track[i]); cdtext_delete(cd_get_cdtext(cd)); rem_free(cd_get_rem(cd)); free(cd); } }
/** * * rct2: 0x006D3823 */ static void window_track_delete_prompt_mouseup() { rct_window *w; short widgetIndex; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: case WIDX_PROMPT_CANCEL: window_close(w); break; case WIDX_PROMPT_DELETE: window_close(w); if (track_delete()) window_close_by_class(WC_MANAGE_TRACK_DESIGN); else window_error_open(STR_CANT_DELETE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16)); break; } }