static int count_day_pages(Calendar *c, int lines_per_page, Tick tick) { int n, i, j, timeslots, num_appts, pages, max = 0; Props *p = (Props *)c->properties; int daybegin = get_int_prop(p, CP_DAYBEGIN); int dayend = get_int_prop(p, CP_DAYEND); char *location; time_t start, end; CSA_return_code stat; CSA_entry_handle *list; CSA_attribute *range_attrs; CSA_enum *ops; CSA_uint32 a_total; for (i=daybegin; i < dayend; i++) { start = (time_t) lower_bound(i, tick); end = (time_t) next_nhours(start+1, 1) - 1; setup_range(&range_attrs, &ops, &j, start, end, CSA_TYPE_EVENT, NULL, B_FALSE, c->general->version); csa_list_entries(c->cal_handle, j, range_attrs, ops, &a_total, &list, NULL); free_range(&range_attrs, &ops, j); num_appts = count_multi_appts(list, a_total, c); if (num_appts > max) max = num_appts; csa_free(list); } pages = max / lines_per_page; if ((max % lines_per_page) > 0) pages++; return(pages); }
static int count_week_pages (Calendar *c, int lines_per_page, Tick start_date) { time_t start, stop; CSA_return_code stat; CSA_entry_handle *list; CSA_attribute *range_attrs; CSA_enum *ops; CSA_uint32 a_total; int num_appts, i, j, max = 0, pages; /* count the times and text of appts */ for (i = 1; i <= 7; i++) { /* setup a time limit for appts searched */ start = (time_t) lowerbound (start_date); stop = (time_t) next_ndays(start_date, 1) - 1; setup_range(&range_attrs, &ops, &j, start, stop, CSA_TYPE_EVENT, 0, B_FALSE, c->general->version); csa_list_entries(c->cal_handle, j, range_attrs, ops, &a_total, &list, NULL); free_range(&range_attrs, &ops, j); num_appts = count_multi_appts(list, a_total, c); if (num_appts > max) max = num_appts; start_date = nextday(start_date); csa_free(list); } pages = max / lines_per_page; if ((max % lines_per_page) > 0) pages++; return(pages); }
void main(int argc, char **argv) { int cnt, status = 0; char *date = NULL, *view = NULL, *target = NULL, *start = NULL, *end = NULL, *repeat = NULL, *numrepeat = NULL, *what = NULL, *uname, *loc; Props *p = NULL; CSA_entry_handle *list; CSA_session_handle c_handle; CSA_return_code stat; CSA_calendar_user csa_user; DisplayType dt; int version; char date_str[256]; #ifdef FNS char buf[256]; #endif init_time(); _DtEnvControl(DT_ENV_SET); /* set up environment variables */ setlocale(LC_ALL, ""); DT_catd = catopen(DTCM_CAT, NL_CAT_LOCALE); cm_tty_load_props(&p); dt = get_int_prop(p, CP_DEFAULTDISP); #ifdef FNS dtfns_init(); #endif if (argc > 1) { cm_args(argc,argv); /* parse command line */ if (cm_strlen(cm_target)) target = cm_target; else target = cm_get_credentials(); #ifdef FNS if (cmfns_use_fns(p)) { cmfns_lookup_calendar(target, buf, sizeof(buf)); target = buf; } #endif uname = cm_target2name(target); loc = cm_target2location(target); csa_user.user_name = target; csa_user.user_type = 0; csa_user.calendar_user_extensions = NULL; csa_user.calendar_address = target; stat = csa_logon(NULL, &csa_user, NULL, NULL, NULL, &c_handle, NULL); if (stat != CSA_SUCCESS) { char *format = cm_strdup(catgets(DT_catd, 1, 206, "\nCould not open calendar %s\n")); fprintf(stderr, format, target ? target : catgets(DT_catd, 1, 209, "UNKNOWN")); free(format); free(uname); free(loc); exit(1); } version = get_data_version(c_handle); if (!cm_date[0]) format_tick(now(), get_int_prop(p, CP_DATEORDERING), get_int_prop(p, CP_DATESEPARATOR), cm_date); if (cm_strlen(cm_date)) date = cm_date; if (cm_strlen(cm_view)) view = cm_view; if (cm_strlen(cm_start)) start = cm_start; if (!cm_end[0] && cm_start[0]) { format_time((int)cm_getdate(cm_start, NULL) + hrsec, dt, cm_end); } if (cm_strlen(cm_end)) end = cm_end; if (cm_strlen(cm_repeatstr)) repeat = cm_repeatstr; if (cm_strlen(cm_for)) numrepeat = cm_for; if (cm_strlen(cm_what)) what = cm_what; if (!cm_appt_file[0]) status = cm_tty_insert(DT_catd, c_handle, version, date, start, end, repeat, numrepeat, what, NULL, p); else status = cm_tty_insert(DT_catd, c_handle, version, date, start, end, repeat, numrepeat, what, cm_appt_file, p); } else { prompt_for_insert(p); if (cm_strlen(cm_target)) target = cm_target; uname = cm_target2name(target); loc = cm_target2location(target); csa_user.user_name = target; csa_user.user_type = 0; csa_user.calendar_user_extensions = NULL; csa_user.calendar_address = target; stat = csa_logon(NULL, &csa_user, NULL, NULL, NULL, &c_handle, NULL); if (stat !=CSA_SUCCESS) { char *format = cm_strdup(catgets(DT_catd, 1, 206, "\nCould not open calendar %s\n")); fprintf(stderr, format, target ? target : catgets(DT_catd, 1, 209, "UNKNOWN")); free(format); free(uname); free(loc); exit(1); } version = get_data_version(c_handle); if (cm_strlen(cm_date)) date = cm_date; if (cm_strlen(cm_view)) view = cm_view; if (cm_strlen(cm_start)) start = cm_start; if (cm_strlen(cm_end)) end = cm_end; if (cm_strlen(cm_repeatstr)) repeat = cm_repeatstr; if (cm_strlen(cm_for)) numrepeat = cm_for; if (cm_strlen(cm_what)) what = cm_what; status = cm_tty_insert(DT_catd, c_handle, version, date, start, end, repeat, numrepeat, what, NULL, p); } if ((cnt = cm_tty_lookup(DT_catd, c_handle, version, date, view, &list, p)) > 0) csa_free(list); csa_logoff(c_handle, NULL); props_clean_up(p); free(p); free(uname); free(loc); exit(status); }
TextIndexCSA::~TextIndexCSA(){ csa_free(csa); /*remove files *.idx and *.psi*/ /*system("rm -rf *.psi"); * system("rm .rf *.idx");*/ }
int main(int argc, char **argv) { int cnt; char index[10], *target = NULL, *date = NULL, *view = NULL, *uname, *loc; Props *p = NULL; CSA_entry_handle *list; CSA_session_handle c_handle; CSA_return_code stat; CSA_calendar_user csa_user; int version; #ifdef FNS char buf[256]; #endif init_time(); setlocale(LC_ALL, ""); _DtEnvControl(DT_ENV_SET); /* set up environment variables */ DT_catd = catopen(DTCM_CAT, NL_CAT_LOCALE); cm_tty_load_props(&p); cm_args(argc,argv); /* parse command line */ target = (cm_strlen(cm_target)) ? cm_target : cm_get_credentials(); #ifdef FNS dtfns_init(); if (cmfns_use_fns(p)) { cmfns_lookup_calendar(target, buf, sizeof(buf)); target = buf; } #endif if (cm_strlen(cm_date)) date = cm_date; if (cm_strlen(cm_view)) view = cm_view; uname = cm_target2name(target); loc = cm_target2location(target); csa_user.user_name = target; csa_user.user_type = 0; csa_user.calendar_user_extensions = NULL; csa_user.calendar_address = target; stat = csa_logon(NULL, &csa_user, NULL, NULL, NULL, &c_handle, NULL); if (stat != CSA_SUCCESS) { char *format = strdup(catgets(DT_catd, 1, 188, "\nCould not open calendar %s\n")); fprintf(stderr, format, target ? target : catgets(DT_catd, 1, 189, "UNKNOWN")); free(format); free(uname); free(loc); exit(1); } version = get_data_version(c_handle); while (!cm_index) { if ((cnt = cm_tty_lookup(DT_catd, c_handle, version, date, view, &list, p)) <= 0) { csa_logoff(c_handle, NULL); free(uname); free(loc); exit(0); } fprintf(stdout, catgets(DT_catd, 1, 190, "Item to delete (number)? ")); fgets(index, 9, stdin); fprintf(stdout,"\n\n"); if (*index < '0' || *index > '9') { csa_free(list); break; } cm_index = atoi(index); if (cnt >= cm_index) cm_tty_delete(DT_catd, c_handle, version, cm_index - 1, list); memset(index, '\0', 10); csa_free(list); cm_index = 0; } csa_logoff(c_handle, NULL); props_clean_up(p); free(p); free(uname); free(loc); return 0; }
static Boolean _print_day(Calendar *c, int num_page, void *xp, Tick first_date, Props *p, Boolean first) { char buf[100]; int n, i, j, timeslots, num_appts, pages; int max = 0; int daybegin = get_int_prop(p, CP_DAYBEGIN); int dayend = get_int_prop(p, CP_DAYEND); OrderingType ord_t = get_int_prop(p, CP_DATEORDERING); Boolean more, done = False, all_done = True; char *location; CSA_return_code stat; CSA_entry_handle *list; CSA_attribute *range_attrs; CSA_enum *ops; CSA_uint32 a_total; time_t start, stop; int lines_per_page; static Tick tick = 0; static int total_pages = 0; /* * Need to find the max number of timeslots which will be shown * in one column, for later calculation of box height. */ if ((!morning(daybegin)) || dayend <= 12) timeslots = dayend - daybegin; else timeslots = ((12-daybegin) > (dayend-12)) ? (12-daybegin) : (dayend-12); x_init_printer(xp, PORTRAIT); x_init_day(xp, timeslots); lines_per_page = x_get_day_lines_per_page(xp); if (first) tick = first_date; if (num_page > 1) tick = prevday(tick); else total_pages = (lines_per_page > 0) ? count_day_pages(c, lines_per_page, tick) : 1; format_date(tick, ord_t, buf, 1, 0, 0); x_print_header(xp, buf, num_page, total_pages); x_day_header(xp); for (i=daybegin; i < dayend; i++) { start = (time_t) lower_bound(i, tick); stop = (time_t) next_nhours(start+1, 1) - 1; setup_range(&range_attrs, &ops, &j, start, stop, CSA_TYPE_EVENT, NULL, B_FALSE, c->general->version); csa_list_entries(c->cal_handle, j, range_attrs, ops, &a_total, &list, NULL); free_range(&range_attrs, &ops, j); num_appts = count_multi_appts(list, a_total, c); if ((lines_per_page > 0) && (num_appts > (lines_per_page * num_page))) more = True; else more = False; x_day_timeslots (xp, i, more); if (lines_per_page > 0) done = x_print_multi_appts (xp, list, a_total, num_page, dayGlance); else done = True; if (!done) all_done = False; csa_free(list); } x_finish_printer(xp); tick = nextday(tick); return(all_done); }
extern void paint_dayview(Calendar *c, Boolean repaint, XRectangle *rect, Boolean update_months) { Props *p = (Props*)c->properties; int num_hrs; int beg = get_int_prop(p, CP_DAYBEGIN); int end = get_int_prop(p, CP_DAYEND); time_t start, stop; CSA_attribute *range_attrs; CSA_entry_handle *list; CSA_enum *ops; int i, j; CSA_uint32 a_total; int panel0_year, panel0_month; int panel1_year, panel1_month; int panel2_year, panel2_month; int year_num, month_num; Boolean day_not_on_panel = False; Day *d = (Day *)c->view->day_info; int top_panel = 0; int bottom_panel = 2; num_hrs = end - beg + 1; if (c->paint_cache == NULL) { start = (time_t) lower_bound(0, c->view->date); stop = (time_t) next_nhours(start, end+1) - 1; setup_range(&range_attrs, &ops, &j, start, stop, CSA_TYPE_EVENT, NULL, B_FALSE, c->general->version); csa_list_entries(c->cal_handle, j, range_attrs, ops, &a_total, &list, NULL); free_range(&range_attrs, &ops, j); allocate_paint_cache(list, a_total, &c->paint_cache); c->paint_cache_size = a_total; csa_free(list); } year_num = year(c->view->date); month_num = month(c->view->date); XtVaGetValues(d->month_panels[1], XmNyear, &panel1_year, XmNmonth, &panel1_month, NULL); if ((panel1_year == year(get_bot())) && (panel1_month == 1)) top_panel = 1; else if ((panel1_year == year(get_eot())) && (panel1_month == 12)) bottom_panel = 1; XtVaGetValues(d->month_panels[top_panel], XmNyear, &panel0_year, XmNmonth, &panel0_month, NULL); if ((year_num < panel0_year) || ((year_num == panel0_year) && (month_num < panel0_month))) day_not_on_panel = True; XtVaGetValues(d->month_panels[bottom_panel], XmNyear, &panel2_year, XmNmonth, &panel2_month, NULL); if ((year_num > panel2_year) || ((year_num == panel2_year) && (month_num > panel2_month))) day_not_on_panel = True; /* set up month panels */ if (update_months || day_not_on_panel) update_quarter(c); /* no need to do this on a damage event */ if (!rect) display_monthpanels(c); /* repaint appointment area */ if (repaint) { int line_length; gr_clear_area(c->xcontext, 0, 0, c->view->winw, c->view->winh); line_length = c->view->topoffset + ((end - beg + 1) * c->view->boxh); /* draw line separating mo. boxes and appts. */ gr_draw_line(c->xcontext, (int)MOBOX_AREA_WIDTH+1, 0, (int)MOBOX_AREA_WIDTH+1, line_length, gr_solid, rect); gr_draw_line(c->xcontext, (int)MOBOX_AREA_WIDTH+2, 0, (int)MOBOX_AREA_WIDTH+2, line_length, gr_solid, rect); gr_draw_line(c->xcontext, (int)MOBOX_AREA_WIDTH+2, c->view->topoffset-1, c->view->winw, c->view->topoffset-1, gr_solid, rect); gr_draw_line(c->xcontext, (int)MOBOX_AREA_WIDTH+2, c->view->topoffset, c->view->winw, c->view->topoffset, gr_solid, rect); paint_dayview_appts(c, c->paint_cache, c->paint_cache_size, rect); } /* just repaint schedule area */ else { gr_clear_area(c->xcontext, (int)MOBOX_AREA_WIDTH+4, 0, c->view->winw - (int)MOBOX_AREA_WIDTH+4, c->view->winh); gr_draw_line(c->xcontext, (int)MOBOX_AREA_WIDTH+2, c->view->topoffset, c->view->winw, c->view->topoffset, gr_solid, rect); gr_draw_line(c->xcontext, (int)MOBOX_AREA_WIDTH+2, c->view->topoffset+1, c->view->winw, c->view->topoffset+1, gr_solid, rect); paint_dayview_appts(c, c->paint_cache, c->paint_cache_size, rect); } paint_day_header(c, c->view->date, rect); }
static void draw_week(Calendar *c, XRectangle *rect, Boundary boundary) { Week *w = (Week *)c->view->week_info; register int current_day; register int n; register int x, y; int char_height; int start_date; char **day_names; char label[80]; char buf[MAXNAMELEN]; char *footer_message = NULL; int start_ind, end_ind; int today_dom, day_om; new_XContext *xc; Props *p = (Props*)c->properties; XRectangle chartrect; OrderingType ot = get_int_prop(p, CP_DATEORDERING); Tick start_tick, end_tick; time_t start, stop; CSA_return_code stat; CSA_entry_handle *list; CSA_attribute *range_attrs; CSA_enum *ops; CSA_uint32 a_total; int i, lower_bound = 0, upper_bound = 0; XFontSetExtents regfontextents, boldfontextents; int notused, width1, width2, width3; CalFontExtents(w->font, ®fontextents); char_height = regfontextents.max_logical_extent.height; start_date = w->start_date; xc = c->xcontext; start = (time_t) lowerbound(start_date); stop = (time_t) next_ndays(start, 7) - 1; if (c->paint_cache == NULL) { setup_range(&range_attrs, &ops, &i, start, stop, CSA_TYPE_EVENT, 0, B_FALSE, c->general->version); csa_list_entries(c->cal_handle, i, range_attrs, ops, &a_total, &list, NULL); free_range(&range_attrs, &ops, i); allocate_paint_cache(list, a_total, &c->paint_cache); c->paint_cache_size = a_total; csa_free(list); } gr_clear_box(xc, 0, 0, w->canvas_w, w->canvas_h); CalTextExtents(w->font, days2[3], cm_strlen(days2[3]), ¬used, ¬used, &width1, ¬used); CalTextExtents(w->font, " 00", cm_strlen(" 00"), ¬used, ¬used, &width2, ¬used); CalTextExtents(w->font, "Wed 00", cm_strlen("Wed 00"), ¬used, ¬used, &width3, ¬used); if (width1 + width2 <= w->day_width - 2) day_names = days2; else if (width3 <= w->day_width - 2) day_names = days; else day_names = days3; x = w->x; y = w->y; format_week_header(start_date, ot, label); gr_text(xc, x, y - char_height / 2, w->font, label, rect); /* * Draw bold box around first 5 days */ gr_draw_box(xc, x, y, w->width, w->day_height, rect); gr_draw_box(xc, x - 1, y - 1, w->width + 2, w->day_height + 2, rect); gr_draw_line(xc, x, y + w->label_height, x + w->width, y + w->label_height, gr_solid, rect); /* * Draw bold box around last 2 days */ x += 3 * w->day_width; y += w->day_height; gr_draw_box(xc, x, y, 2 * w->day_width, w->day_height, rect); gr_draw_box(xc, x - 1, y, 2 * w->day_width + 2, w->day_height + 1,rect); gr_draw_line(xc, x, y + w->label_height, x + 2 * w->day_width, y + w->label_height, gr_solid, rect); y = w->y; x = w->x + w->day_width; for (n = 0; n < 4; n++) { if (n < 3) { gr_draw_line(xc, x, y, x, y + w->day_height, gr_solid, rect); } else { gr_draw_line(xc, x, y, x, y + 2 * w->day_height, gr_solid, rect); } x += w->day_width; } /* * Fill in week with appointments */ x = w->x; y = w->y; current_day = start_date; today_dom = dom(time(0)); /* Crock alert!!!! The obscure code below is doing something really nasty. The variable boundary indicates whether the week being displayed falls across a boundary with the beginning or the end of time. In the case of the beginning of time, the code then assumes that the first 2 days in the week need to be unbuttoned, and the rest buttoned and painted. Likewise, with the end of time case, the code assumes the last 3 days of the week need similar treatment. */ for (n = 0; n < 7; n++) { if (n == 5) { y += w->day_height; x = w->x + 3 * w->day_width; } if (boundary == okay) { day_om = dom(current_day); display_hot_btn(c, n, day_om); fill_day(c, w, x, y, current_day, c->paint_cache, c->paint_cache_size, rect); current_day += daysec; if (lower_bound > 0) { sprintf(buf, "%s", catgets(c->DT_catd, 1, 623, "Calendar does not display dates prior to January 1, 1970")); footer_message = buf; } else footer_message = NULL; } else if (boundary == lower) { /* skip days before Jan 1, 1970 */ clear_hot_btn(c, n); if (lower_bound++ == 2) boundary = okay; } else if (boundary == upper) { day_om = dom(current_day); if (++upper_bound <= 4) display_hot_btn(c, n, day_om); fill_day(c, w, x, y, current_day, c->paint_cache, c->paint_cache_size, rect); current_day += daysec; sprintf(buf, "%s", catgets(c->DT_catd, 1, 624, "Calendar does not display dates after December 31, 2037")); footer_message = buf; if (upper_bound > 4) clear_hot_btn(c, n); } x += w->day_width; } if (rect != NULL) { CalFontExtents(w->small_bold_font, &boldfontextents); chartrect.x = w->x; chartrect.y = w->chart_y - w->label_height; chartrect.width = w->chart_width + 3*boldfontextents.max_logical_extent.width; chartrect.height = w->chart_height + 2*w->label_height; } if (rect == NULL || myrect_intersectsrect(rect, &chartrect)) { for (i = 0; i < c->paint_cache_size; i++) { start_tick = (c->paint_cache)[i].start_time; end_tick = (c->paint_cache)[i].end_time; cm_update_segs(w, start_tick, (end_tick ? (end_tick - start_tick) : 0), &start_ind, &end_ind, True); } chart_draw_appts(w, 0, w->segs_in_array); draw_chart(c, w, NULL); } /* do not repaint the footer message in a damage display. For some reason this causes the damage routine to get called again, resulting in a recursive dsaster. */ if (footer_message && !rect) set_message(c->message_text, footer_message); }
static Boolean print_week (Calendar *c, int num_page, void *xp, Tick first_date, Props *p, Boolean first) { Boolean more, done = False, all_done = True; int num_appts, day_of_week; char buf[128]; int i, j; OrderingType ot = get_int_prop(p, CP_DATEORDERING); time_t start, stop; CSA_return_code stat; CSA_entry_handle *list; CSA_attribute *range_attrs; CSA_enum *ops; CSA_uint32 a_total; int lines_per_page; static Tick start_date = 0; static int total_pages; static char *days[] = { (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL }; if (days[0] == (char *)NULL) { days[0] = XtNewString(catgets(c->DT_catd, 1, 596, "Monday %d")); days[1] = XtNewString(catgets(c->DT_catd, 1, 597, "Tuesday %d")); days[2] = XtNewString(catgets(c->DT_catd, 1, 598, "Wednesday %d")); days[3] = XtNewString(catgets(c->DT_catd, 1, 599, "Thursday %d")); days[4] = XtNewString(catgets(c->DT_catd, 1, 600, "Friday %d")); days[5] = XtNewString(catgets(c->DT_catd, 1, 601, "Saturday %d")); days[6] = XtNewString(catgets(c->DT_catd, 1, 602, "Sunday %d")); } x_init_printer(xp, LANDSCAPE); x_init_week(xp); lines_per_page = x_get_week_lines_per_page(xp); if (first) start_date = first_date; if (num_page > 1) { start_date = prevweek(start_date); if (!timeok(start_date)) start_date = get_bot(); } else total_pages = (lines_per_page > 0) ? count_week_pages(c, lines_per_page, start_date) : 1; format_week_header(start_date, ot, buf); x_print_header(xp, buf, num_page, total_pages); x_week_appt_boxes(xp); x_week_sched_boxes(xp); /* print the times and text of appts */ for (i = (dow(start_date) + 6) % 7; i < 7; i++) { /* print <Weekday DD> centered at top of appt box */ x_week_sched_init(xp); sprintf(buf, days[i], dom(start_date)); /* setup a time limit for appts searched */ start = (time_t) lowerbound (start_date); stop = (time_t) next_ndays(start_date, 1) - 1; setup_range(&range_attrs, &ops, &j, start, stop, CSA_TYPE_EVENT, 0, B_FALSE, c->general->version); csa_list_entries(c->cal_handle, j, range_attrs, ops, &a_total, &list, NULL); free_range(&range_attrs, &ops, j); num_appts = count_multi_appts(list, a_total, c); if ((lines_per_page > 0) && (num_appts > (lines_per_page * num_page))) more = True; else more = False; x_week_daynames(xp, buf, i, more); /* print out times and appts */ if (lines_per_page > 0) done = x_print_multi_appts(xp, list, a_total, num_page, weekGlance); else done = True; if (!done) all_done = False; x_week_sched_draw(xp, i); start_date = nextday(start_date); csa_free(list); } x_finish_printer(xp); return(all_done); }
int main(int argc, char **argv) { int cnt; char *target = NULL, *date = NULL, *view = NULL, *uname, *loc; Props *p = NULL; CSA_session_handle c_handle; CSA_entry_handle *list; CSA_return_code stat; CSA_calendar_user csa_user; int version; #ifdef FNS char buf[256]; #endif init_time(); _DtEnvControl(DT_ENV_SET); /* set up environment variables */ setlocale(LC_ALL, ""); DT_catd = catopen(DTCM_CAT, NL_CAT_LOCALE); cm_tty_load_props(&p); cm_args(argc,argv); /* parse command line */ target = (cm_strlen(cm_target)) ? cm_target : cm_get_credentials(); #ifdef FNS dtfns_init(); if (cmfns_use_fns(p)) { cmfns_lookup_calendar(target, buf, sizeof(buf)); target = buf; } #endif uname = cm_target2name(target); loc = cm_target2location(target); csa_user.user_name = target; csa_user.user_type = 0; csa_user.calendar_user_extensions = NULL; csa_user.calendar_address = target; stat = csa_logon(NULL, &csa_user, NULL, NULL, NULL, &c_handle, NULL); if (stat != CSA_SUCCESS) { char *format = cm_strdup(catgets(DT_catd, 1, 208, "\nCould not open calendar \"%s\"\n")); fprintf(stderr, format, target ? target : catgets(DT_catd, 1, 209, "UNKNOWN")); free(format); free(uname); free(loc); exit(1); } version = get_data_version(c_handle); if (cm_strlen(cm_date)) date = cm_date; if (cm_strlen(cm_view)) view = cm_view; if ((cnt = cm_tty_lookup(DT_catd, c_handle, version, date, view, &list, p)) > 0) csa_free(list); csa_logoff(c_handle, NULL); props_clean_up(p); free(p); free(uname); free(loc); return 0; }