void print_breaks(Cd *cd, int gaps) { int i; long b; long pg; Track *track; for (i = 1; i <= cd_get_ntrack(cd); i++) { track = cd_get_track(cd, i); /* * When breakpoint is at: * index 0: gap is prepended to track * index 1: gap is appended to previous track */ b = track_get_start(track); pg = track_get_index(track, 1) - track_get_zero_pre(track); if (gaps == PREPEND || gaps == SPLIT) { print_breakpoint(b); /* * There is no previous track to append the first track's * pregap to. */ } else if (gaps == APPEND && 1 < i) { print_breakpoint(b + pg); } /* If pregap exists, print breakpoints (in split mode). */ if (gaps == SPLIT && 0 < pg) { print_breakpoint(b + pg); } } }
static void info_break_select(mrb_state *mrb, mrdb_state *mrdb) { int32_t ret = MRB_DEBUG_OK; int32_t bpno = 0; char* ps = mrdb->command; mrb_debug_breakpoint bp; mrb_bool isFirst = TRUE; int32_t i; for(i=2; i<mrdb->wcnt; i++) { ps = mrdb->words[i]; bpno = parse_breakpoint_no(ps); if(bpno == 0) { puts(BREAK_ERR_MSG_INVALIDBPNO_INFO); break; } ret = mrb_debug_get_break(mrb, mrdb->dbg, bpno, &bp); if(ret == MRB_DEBUG_BREAK_INVALID_NO) { printf(BREAK_ERR_MSG_NOBPNO_INFO, bpno); break; } else if(ret != MRB_DEBUG_OK) { print_api_common_error(ret); break; } else if(isFirst == TRUE) { isFirst = FALSE; puts(BREAK_INFO_MSG_HEADER); } print_breakpoint(&bp); } }
static void info_break_all(mrb_state *mrb, mrdb_state *mrdb) { int32_t bpnum = 0; int32_t i = 0; int32_t ret = MRB_DEBUG_OK; mrb_debug_breakpoint *bp_list; bpnum = mrb_debug_get_breaknum(mrb, mrdb->dbg); if(bpnum < 0) { print_api_common_error(bpnum); return; } else if(bpnum == 0) { puts(BREAK_ERR_MSG_NOBPNO_INFOALL); return; } bp_list = (mrb_debug_breakpoint*)mrb_malloc(mrb, bpnum * sizeof(mrb_debug_breakpoint)); ret = mrb_debug_get_break_all(mrb, mrdb->dbg, (uint32_t)bpnum, bp_list); if(ret < 0) { print_api_common_error(ret); return; } puts(BREAK_INFO_MSG_HEADER); for(i = 0 ; i < bpnum ; i++) { print_breakpoint(&bp_list[i]); } mrb_free(mrb, bp_list); }