static int gather_pci_cap(LibHalContext *ctx, const char *udi, union _virNodeDevCapData *d) { char *sysfs_path; if (get_str_prop(ctx, udi, "pci.linux.sysfs_path", &sysfs_path) == 0) { char *p = strrchr(sysfs_path, '/'); if (p) { (void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.domain); (void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.bus); (void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.slot); (void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.function); } if (!pciGetPhysicalFunction(sysfs_path, &d->pci_dev.physical_function)) d->pci_dev.flags |= VIR_NODE_DEV_CAP_FLAG_PCI_PHYSICAL_FUNCTION; if (!pciGetVirtualFunctions(sysfs_path, &d->pci_dev.virtual_functions, &d->pci_dev.num_virtual_functions) || d->pci_dev.num_virtual_functions > 0) d->pci_dev.flags |= VIR_NODE_DEV_CAP_FLAG_PCI_VIRTUAL_FUNCTION; VIR_FREE(sysfs_path); } (void)get_int_prop(ctx, udi, "pci.vendor_id", (int *)&d->pci_dev.vendor); if (get_str_prop(ctx, udi, "pci.vendor", &d->pci_dev.vendor_name) != 0) (void)get_str_prop(ctx, udi, "info.vendor", &d->pci_dev.vendor_name); (void)get_int_prop(ctx, udi, "pci.product_id", (int *)&d->pci_dev.product); if (get_str_prop(ctx, udi, "pci.product", &d->pci_dev.product_name) != 0) (void)get_str_prop(ctx, udi, "info.product", &d->pci_dev.product_name); return 0; }
static int gather_pci_cap(LibHalContext *ctx, const char *udi, virNodeDevCapDataPtr d) { char *sysfs_path; if (get_str_prop(ctx, udi, "pci.linux.sysfs_path", &sysfs_path) == 0) { char *p = strrchr(sysfs_path, '/'); if (p) { ignore_value(virStrToLong_ui(p+1, &p, 16, &d->pci_dev.domain)); ignore_value(virStrToLong_ui(p+1, &p, 16, &d->pci_dev.bus)); ignore_value(virStrToLong_ui(p+1, &p, 16, &d->pci_dev.slot)); ignore_value(virStrToLong_ui(p+1, &p, 16, &d->pci_dev.function)); } if (nodeDeviceSysfsGetPCIRelatedDevCaps(sysfs_path, d) < 0) { VIR_FREE(sysfs_path); return -1; } VIR_FREE(sysfs_path); } (void)get_int_prop(ctx, udi, "pci.vendor_id", (int *)&d->pci_dev.vendor); if (get_str_prop(ctx, udi, "pci.vendor", &d->pci_dev.vendor_name) != 0) (void)get_str_prop(ctx, udi, "info.vendor", &d->pci_dev.vendor_name); (void)get_int_prop(ctx, udi, "pci.product_id", (int *)&d->pci_dev.product); if (get_str_prop(ctx, udi, "pci.product", &d->pci_dev.product_name) != 0) (void)get_str_prop(ctx, udi, "info.product", &d->pci_dev.product_name); return 0; }
static int gather_pci_cap(LibHalContext *ctx, const char *udi, union _virNodeDevCapData *d) { char *sysfs_path; if (get_str_prop(ctx, udi, "pci.linux.sysfs_path", &sysfs_path) == 0) { char *p = strrchr(sysfs_path, '/'); if (p) { (void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.domain); (void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.bus); (void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.slot); (void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.function); } get_physical_function(sysfs_path, d); get_virtual_functions(sysfs_path, d); VIR_FREE(sysfs_path); } (void)get_int_prop(ctx, udi, "pci.vendor_id", (int *)&d->pci_dev.vendor); if (get_str_prop(ctx, udi, "pci.vendor", &d->pci_dev.vendor_name) != 0) (void)get_str_prop(ctx, udi, "info.vendor", &d->pci_dev.vendor_name); (void)get_int_prop(ctx, udi, "pci.product_id", (int *)&d->pci_dev.product); if (get_str_prop(ctx, udi, "pci.product", &d->pci_dev.product_name) != 0) (void)get_str_prop(ctx, udi, "info.product", &d->pci_dev.product_name); return 0; }
static void dssw_set_non_times(DSSW *dssw, time_t t) { Props *p = (Props *)dssw->cal->properties; OrderingType ot = get_int_prop(p, CP_DATEORDERING); SeparatorType st = get_int_prop(p, CP_DATESEPARATOR); set_date_in_widget(t, dssw->date_text, ot, st); XmTextSetString(dssw->what_text, dssw->what_val); }
static int gather_scsi_cap(LibHalContext *ctx, const char *udi, union _virNodeDevCapData *d) { (void)get_int_prop(ctx, udi, "scsi.host", (int *)&d->scsi.host); (void)get_int_prop(ctx, udi, "scsi.bus", (int *)&d->scsi.bus); (void)get_int_prop(ctx, udi, "scsi.target", (int *)&d->scsi.target); (void)get_int_prop(ctx, udi, "scsi.lun", (int *)&d->scsi.lun); (void)get_str_prop(ctx, udi, "scsi.type", &d->scsi.type); return 0; }
/* ** Callback from start time and stop time to set text fields accordingly */ static void dssw_set_start_hour(Widget w, XtPointer client_data, XtPointer cbs) { int start_hrs, stop_hrs, dur, start_mins, stop_mins; long user_data; DSSW *dssw = (DSSW *)client_data; Props *p = (Props *)dssw->cal->properties; DisplayType dt = get_int_prop(p, CP_DEFAULTDISP); XtVaGetValues(w, XmNuserData, &user_data, NULL); if (user_data == NO_TIME) { sprintf(dssw->start_val.val, "\0"); sprintf(dssw->stop_val.val, "\0"); dssw->start_val.block = dssw->stop_val.block = TIME_AM; } else if (user_data == ALL_DAY) { if (dt == HOUR12) { sprintf(dssw->start_val.val, "12:00"); sprintf(dssw->stop_val.val, "11:59"); } else { sprintf(dssw->start_val.val, "0000"); sprintf(dssw->stop_val.val, "2359"); } dssw->start_val.block = TIME_AM; dssw->stop_val.block = TIME_PM; } else { start_hrs = user_data / hrsec; dur = get_int_prop(p, CP_APPTDURATION) * minsec; stop_hrs = (user_data + dur) / hrsec; start_mins = (user_data - (start_hrs * hrsec)) / minsec; stop_mins = ((user_data + dur) - (stop_hrs * hrsec)) / minsec; stop_hrs = stop_hrs % 24; if (dt == HOUR12) { dssw->start_val.block = (adjust_hour(&start_hrs)) ? TIME_AM : TIME_PM; dssw->stop_val.block = (adjust_hour(&stop_hrs)) ? TIME_AM : TIME_PM; sprintf(dssw->start_val.val, "%2d:%02d", start_hrs, start_mins); sprintf(dssw->stop_val.val, "%2d:%02d", stop_hrs, stop_mins); } else { dssw->start_val.block = (start_hrs > 12) ? TIME_PM : TIME_AM; dssw->stop_val.block = (stop_hrs > 12) ? TIME_PM : TIME_AM; sprintf(dssw->start_val.val, "%02d%02d", start_hrs, start_mins); sprintf(dssw->stop_val.val, "%02d%02d", stop_hrs, stop_mins); } } set_dssw_times(dssw); }
/******************************************************************************* ** ** Static functions visible to dssw.c only ** *******************************************************************************/ static void dssw_get_non_times(DSSW *dssw, time_t t) { char *str; Props *p = (Props *)dssw->cal->properties; OrderingType ot = get_int_prop(p, CP_DATEORDERING); SeparatorType st = get_int_prop(p, CP_DATESEPARATOR); cm_strcpy(dssw->date_val, get_date_from_widget(t, dssw->date_text, ot, st)); str = XmTextGetString(dssw->what_text); strcpy(dssw->what_val, str); XtFree(str); }
static int gather_usb_cap(LibHalContext *ctx, const char *udi, union _virNodeDevCapData *d) { (void)get_int_prop(ctx, udi, "usb.interface.number", (int *)&d->usb_if.number); (void)get_int_prop(ctx, udi, "usb.interface.class", (int *)&d->usb_if._class); (void)get_int_prop(ctx, udi, "usb.interface.subclass", (int *)&d->usb_if.subclass); (void)get_int_prop(ctx, udi, "usb.interface.protocol", (int *)&d->usb_if.protocol); (void)get_str_prop(ctx, udi, "usb.interface.description", &d->usb_if.description); return 0; }
static void dssw_set_stop_hour(Widget w, XtPointer client_data, XtPointer cbs) { long user_data; int hrs, mins; DSSW *dssw = (DSSW *)client_data; Props *p = (Props *)dssw->cal->properties; DisplayType dt = get_int_prop(p, CP_DEFAULTDISP); get_dssw_times(dssw); XtVaGetValues(w, XmNuserData, &user_data, NULL); if (user_data == NO_TIME) { sprintf(dssw->stop_val.val, "\0"); dssw->stop_val.block = TIME_AM; } else { hrs = user_data / hrsec; mins = (user_data - (hrs * hrsec)) / minsec; if (dt == HOUR12) { dssw->stop_val.block = (adjust_hour(&hrs)) ? TIME_AM : TIME_PM; sprintf(dssw->stop_val.val, "%2d:%02d", hrs, mins); } else { dssw->stop_val.block = (hrs > 12) ? TIME_PM : TIME_AM; sprintf(dssw->stop_val.val, "%02d%02d", hrs, mins); } } set_dssw_times(dssw); }
extern void set_dssw_times(DSSW *dssw) { XmString xmstr; Props *p = (Props *)dssw->cal->properties; DisplayType dt = get_int_prop(p, CP_DEFAULTDISP); XtVaSetValues(dssw->start_text, XmNvalue, dssw->start_val.val, NULL); XtVaSetValues(dssw->stop_text, XmNvalue, dssw->stop_val.val, NULL); xmstr = XmStringCreateLocalized(dssw->start_val.val); XtVaSetValues(XmOptionButtonGadget(dssw->start_menu), XmNlabelString, xmstr, NULL); XmStringFree(xmstr); xmstr = XmStringCreateLocalized(dssw->stop_val.val); XtVaSetValues(XmOptionButtonGadget(dssw->stop_menu), XmNlabelString, xmstr, NULL); XmStringFree(xmstr); if (dt == HOUR12) { if (dssw->start_val.block == TIME_AM) XmToggleButtonSetState(dssw->start_am, True, True); else XmToggleButtonSetState(dssw->start_pm, True, True); if (dssw->stop_val.block == TIME_AM) XmToggleButtonSetState(dssw->stop_am, True, True); else XmToggleButtonSetState(dssw->stop_pm, True, True); } }
static int day_xytoclock(Calendar *c, int x, int y, Tick t) { int daybegin, hr, val; char buf[10]; struct tm tm; Props *p; _Xltimeparams localtime_buf; p = (Props *)c->properties; daybegin = get_int_prop(p, CP_DAYBEGIN); tm = *_XLocaltime(&t, localtime_buf); hr = (x == 1) ? (12 + y) : (y + daybegin - 1); /* * If y == 0 then the user is clicking on the no-time area. There * is no hour associated with no-time events. */ if (y == 0) hr = 0; (void)sprintf(buf, "%d/%d/%d", tm.tm_mon+1, tm.tm_mday, tm.tm_year+1900); val =cm_getdate(buf, NULL); val = val+(hr*(int)hrsec); adjust_dst(t, val); return(val); }
PCHAR VrFindConsolePath(char *console) { phandle chosen; ihandle console_ih; PCONFIGURATION_NODE node; chosen = OFFinddevice("/chosen"); console_ih = get_int_prop(chosen, console); if (console_ih == -1) { return (NULL); } if (strcmp(console, "stdin") == 0) { ConsoleIn = console_ih; } if (strcmp(console, "stdout") == 0) { ConsoleOut = console_ih; } node = InstanceToNode(console_ih); if (node == NULL) { fatal("VrFindConsolePath: cannot locate %s node\n", console); } return (NodeToArcPath(node)); }
static int gather_usb_device_cap(LibHalContext *ctx, const char *udi, union _virNodeDevCapData *d) { (void)get_int_prop(ctx, udi, "usb_device.bus_number", (int *)&d->usb_dev.bus); (void)get_int_prop(ctx, udi, "usb_device.linux.device_number", (int *)&d->usb_dev.device); (void)get_int_prop(ctx, udi, "usb_device.vendor_id", (int *)&d->usb_dev.vendor); if (get_str_prop(ctx, udi, "usb_device.vendor", &d->usb_dev.vendor_name) != 0) (void)get_str_prop(ctx, udi, "info.vendor", &d->usb_dev.vendor_name); (void)get_int_prop(ctx, udi, "usb_device.product_id", (int *)&d->usb_dev.product); if (get_str_prop(ctx, udi, "usb_device.product", &d->usb_dev.product_name) != 0) (void)get_str_prop(ctx, udi, "info.product", &d->usb_dev.product_name); return 0; }
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); }
extern void set_dssw_defaults(DSSW *dssw, Tick t, Boolean set_times) { int appt_beg, appt_end, beg_hr, end_hr; Props *p = (Props *)dssw->cal->properties; DisplayType dt; Time_scope_menu_op dur_scope; if (set_times) { dt = get_int_prop(p, CP_DEFAULTDISP); appt_beg = get_int_prop(p, CP_APPTBEGIN); beg_hr = appt_beg / minsec; appt_end = get_int_prop(p, CP_APPTDURATION) + appt_beg; end_hr = appt_end / minsec; end_hr = end_hr % 24; if (dt == HOUR12) { dssw->start_val.block = (adjust_hour(&beg_hr)) ? TIME_AM : TIME_PM; dssw->stop_val.block = (adjust_hour(&end_hr)) ? TIME_AM : TIME_PM; sprintf(dssw->start_val.val, "%2d:%02d", beg_hr, appt_beg % minsec); sprintf(dssw->stop_val.val, "%2d:%02d", end_hr, appt_end % minsec); } else { sprintf(dssw->start_val.val, "%02d%02d", beg_hr, appt_beg % minsec); sprintf(dssw->stop_val.val, "%02d%02d", end_hr, appt_end % minsec); dssw->start_val.block = dssw->stop_val.block = TIME_AM; } } dssw->what_val[0] = '\0'; set_dssw_vals(dssw, t); }
extern int count_multi_appts(CSA_entry_handle *list, int num_entries, Calendar *c) { CSA_return_code stat; Dtcm_appointment *appt; int count = 0, i, meoval; Props *pr = (Props*)c->properties; Lines *lines, *l_ptr; meoval = get_int_prop(pr, CP_PRINTPRIVACY); appt = allocate_appt_struct(appt_read, c->general->version, CSA_ENTRY_ATTR_CLASSIFICATION_I, CSA_X_DT_ENTRY_ATTR_SHOWTIME_I, CSA_ENTRY_ATTR_SUMMARY_I, NULL); for (i = 0; i < num_entries; i++) { stat = query_appt_struct(c->cal_handle, list[i], appt); if (stat != CSA_SUCCESS) { free_appt_struct(&appt); return 0; } if ((privacy_set(appt) == CSA_CLASS_PUBLIC) && !(meoval & PRINT_PUBLIC)) continue; else if ((privacy_set(appt) == CSA_CLASS_CONFIDENTIAL) && !(meoval & PRINT_SEMIPRIVATE)) continue; else if ((privacy_set(appt) == CSA_CLASS_PRIVATE) && !(meoval & PRINT_PRIVATE)) continue; if (showtime_set(appt)) { count++; } l_ptr = lines = text_to_lines(appt->what->value->item.string_value, 10); while (lines != NULL) { count++; lines = lines->next; } destroy_lines(l_ptr); } free_appt_struct(&appt); return(count); }
static int gather_scsi_host_cap(LibHalContext *ctx, const char *udi, virNodeDevCapDataPtr d) { int retval = 0; (void)get_int_prop(ctx, udi, "scsi_host.host", (int *)&d->scsi_host.host); retval = nodeDeviceSysfsGetSCSIHostCaps(d); if (retval == -1) goto out; out: return retval; }
static int gather_scsi_host_cap(LibHalContext *ctx, const char *udi, union _virNodeDevCapData *d) { int retval = 0; (void)get_int_prop(ctx, udi, "scsi_host.host", (int *)&d->scsi_host.host); retval = detect_scsi_host_caps(d); if (retval == -1) { goto out; } out: return retval; }
extern void paint_day_header(Calendar *c, Tick date, void *rect) { Props *p = (Props*)c->properties; OrderingType ot = get_int_prop(p, CP_DATEORDERING); int pfy, x; char buf[100]; Boolean inrange = False; Colormap cmap; Pixel foreground_pixel; XFontSetExtents fontextents; struct tm *tm; _Xltimeparams localtime_buf; tm = _XLocaltime(&date, localtime_buf); CalFontExtents(c->fonts->labelfont, &fontextents); pfy = fontextents.max_logical_extent.height; XtVaGetValues(c->canvas, XmNcolormap, &cmap, NULL); XtVaGetValues(c->canvas, XmNforeground, &foreground_pixel, NULL); buf [0] = '\0'; /* NL_COMMENT Attention Translator: This string is used in the calendar day view. In the C locale it has the form: Monday, January 16, 1995 strftime conversion string: "%A, %B %e, %Y" is used. Use the appropriate strftime conversion for your locale. */ strftime(buf, 100, catgets(c->DT_catd, 1, 992, "%A, %B %e, %Y"), tm); inrange = today_inrange(c, date); x = gr_center(c->view->winw-(int)MOBOX_AREA_WIDTH, buf, c->fonts->labelfont) + (int)MOBOX_AREA_WIDTH; if (c->xcontext->screen_depth >= 8 && inrange) gr_text_rgb(c->xcontext, x, c->view->topoffset - (pfy/2), c->fonts->labelfont, buf, foreground_pixel, cmap, rect); else gr_text(c->xcontext, x, c->view->topoffset - (pfy/2), c->fonts->labelfont, buf, rect); }
extern void load_dssw_times(DSSW *dssw, Tick start, Tick stop, Boolean set_no_time) { char buf[10]; Props *p = (Props *)dssw->cal->properties; DisplayType dt; /* * If start and stop times were specified, do the right thing to the * dssw widget */ dt = get_int_prop(p, CP_DEFAULTDISP); if (set_no_time == True){ strcpy(dssw->start_val.val, " "); strcpy(dssw->stop_val.val, " "); return; } if (start > 0) { format_time(start, dt, buf); if (dt == HOUR12) { strncpy(dssw->start_val.val, buf, 5); dssw->start_val.val[5] = '\0'; dssw->start_val.block = (buf[5] == 'a') ? TIME_AM : TIME_PM; } else { strcpy(dssw->start_val.val, buf); dssw->start_val.block = TIME_AM; } } if (stop > 0) { format_time(stop, dt, buf); if (dt == HOUR12) { strncpy(dssw->stop_val.val, buf, 5); dssw->stop_val.val[5] = '\0'; dssw->stop_val.block = (buf[5] == 'a') ? TIME_AM : TIME_PM; } else { strcpy(dssw->stop_val.val, buf); dssw->stop_val.block = TIME_AM; } } }
static int paint_entry(Calendar *c, int x, int y, int maxchars, Paint_cache *cache_entry, XRectangle *rect) { XFontSetExtents fontextents; Props *p = (Props*)c->properties; int nlines = 0, dt = get_int_prop(p, CP_DEFAULTDISP); new_XContext *xc = c->xcontext; char buf1[50], buf2[WHAT_LEN+1]; Week *w = (Week *)c->view->week_info; Tick tick; /* * Write an appointment entry into a day */ if (maxchars >= 40) /* maxed out possible=40 */ maxchars = 40; buf1[0] = '\0'; buf2[0] = '\0'; format_entry(cache_entry, buf1, buf2, dt); tick = cache_entry->start_time; if (cache_entry->show_time && !magic_time(tick) && (buf1[0] != '\0')) { maxchars = gr_nchars(w->day_width - 5, buf1,c->fonts->boldfont); buf1[min(cm_strlen(buf1), maxchars)] = '\0'; gr_text(xc, x, y, c->fonts->boldfont, buf1, rect); nlines++; CalFontExtents(c->fonts->boldfont, &fontextents); y += fontextents.max_logical_extent.height;; } if (buf2[0] != '\0') { maxchars = gr_nchars(w->day_width - 5, buf2, c->fonts->viewfont); buf2[min(cm_strlen(buf2), maxchars)] = '\0'; gr_text(xc, x, y, c->fonts->viewfont, buf2, rect); nlines++; } return(nlines); }
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); }
extern void build_dssw( DSSW *dssw, Calendar *c, Widget parent, Boolean show_notime, Boolean show_allday) { Props *p; DisplayType dt; Arg args[20]; int n; Dimension max_left_label_width; Widget child[2]; XmString label_str; Dimension highest, widest; Widget prev, curr; Dimension _toLabel, _toText, _toMenu, _toRC; dssw->cal = c; dssw->parent = parent; p = (Props *)c->properties; dt = get_int_prop(p, CP_DEFAULTDISP); dssw->show_notime_selection = show_notime; dssw->show_allday_selection = show_allday; /* ** One form manager for the widget */ dssw->dssw_form_mgr = XtVaCreateWidget("dssw_form_mgr", xmFormWidgetClass, parent, XmNautoUnmanage, False, NULL); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 828, "Date:")); dssw->date_label = XtVaCreateWidget("date_label", xmLabelGadgetClass, dssw->dssw_form_mgr, XmNlabelString, label_str, NULL); XmStringFree(label_str); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 829, "Start:")); dssw->start_label = XtVaCreateWidget("start_label", xmLabelGadgetClass, dssw->dssw_form_mgr, XmNlabelString, label_str, NULL); XmStringFree(label_str); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 832, "End:")); dssw->stop_label = XtVaCreateWidget("stop_label", xmLabelGadgetClass, dssw->dssw_form_mgr, XmNlabelString, label_str, NULL); XmStringFree(label_str); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 835, "What:")); dssw->what_label = XtVaCreateWidget("what_label", xmLabelGadgetClass, dssw->dssw_form_mgr, XmNlabelString, label_str, NULL); XmStringFree(label_str); dssw->date_text = XtVaCreateWidget("date_text", xmTextWidgetClass, dssw->dssw_form_mgr, XmNeditMode, XmSINGLE_LINE_EDIT, XmNmaxLength, DATE_LEN - 1, NULL); /* ** Radio button behavior for AM/PM selection for start time */ dssw->start_text = XtVaCreateWidget("start_text", xmTextWidgetClass, dssw->dssw_form_mgr, XmNeditMode, XmSINGLE_LINE_EDIT, XmNmaxLength, START_STOP_LEN - 1, NULL); dssw->start_menu = create_start_stop_time_menu(dssw->dssw_form_mgr, NULL, dssw_set_start_hour, (XtPointer)dssw, p, show_notime, show_allday, &dssw->start_menu_widget_list, &dssw->start_menu_widget_count); XtVaSetValues(dssw->start_menu, XmNnavigationType, XmTAB_GROUP, NULL); dssw->start_ampm_rc_mgr = XtVaCreateWidget("start_ampm_rc_mgr", xmRowColumnWidgetClass, dssw->dssw_form_mgr, XmNpacking, XmPACK_COLUMN, XmNorientation, XmHORIZONTAL, XmNradioBehavior, True, XmNisHomogeneous, True, XmNentryClass, xmToggleButtonGadgetClass, NULL); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 830, "AM")); child[0] = dssw->start_am = XtVaCreateWidget("start_am", xmToggleButtonGadgetClass, dssw->start_ampm_rc_mgr, XmNlabelString, label_str, XmNsensitive, (dt == HOUR12) ? True : False, NULL); XmStringFree(label_str); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 831, "PM")); child[1] = dssw->start_pm = XtVaCreateWidget("start_pm", xmToggleButtonGadgetClass, dssw->start_ampm_rc_mgr, XmNlabelString, label_str, XmNsensitive, (dt == HOUR12) ? True : False, NULL); XmStringFree(label_str); XtManageChildren(child, 2); /* ** Last and near the end, the stop stuff ** Radio button behavior for AM/PM selection for stop time */ dssw->stop_text = XtVaCreateWidget("stop_text", xmTextWidgetClass, dssw->dssw_form_mgr, XmNeditMode, XmSINGLE_LINE_EDIT, XmNmaxLength, START_STOP_LEN - 1, NULL); dssw->stop_menu = create_start_stop_time_menu(dssw->dssw_form_mgr, NULL, dssw_set_stop_hour, (XtPointer)dssw, p, show_notime, False, &dssw->stop_menu_widget_list, &dssw->stop_menu_widget_count); XtVaSetValues(dssw->stop_menu, XmNnavigationType, XmTAB_GROUP, NULL); dssw->stop_ampm_rc_mgr = XtVaCreateWidget("stop_ampm_rc_mgr", xmRowColumnWidgetClass, dssw->dssw_form_mgr, XmNpacking, XmPACK_COLUMN, XmNorientation, XmHORIZONTAL, XmNradioBehavior, True, XmNisHomogeneous, True, XmNentryClass, xmToggleButtonGadgetClass, NULL); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 833, "AM")); child[0] = dssw->stop_am = XtVaCreateWidget("stop_am", xmToggleButtonGadgetClass, dssw->stop_ampm_rc_mgr, XmNlabelString, label_str, XmNsensitive, (dt == HOUR12) ? True : False, NULL); XmStringFree(label_str); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 834, "PM")); child[1] = dssw->stop_pm = XtVaCreateWidget("stop_pm", xmToggleButtonGadgetClass, dssw->stop_ampm_rc_mgr, XmNlabelString, label_str, XmNsensitive, (dt == HOUR12) ? True : False, NULL); XmStringFree(label_str); XtManageChildren(child, 2); /* ** Finally the what text field */ n = 0; XtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT), n++; /* XtSetArg(args[n], XmNscrollVertical, True), n++; */ XtSetArg(args[n], XmNscrollHorizontal, False), n++; XtSetArg(args[n], XmNscrollingPolicy, XmAUTOMATIC), n++; XtSetArg(args[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED), n++; XtSetArg(args[n], XmNrows, 3), n++; XtSetArg(args[n], XmNmaxLength, WHAT_LEN - 1), n++; dssw->what_text = XmCreateScrolledText(dssw->dssw_form_mgr, "what_text", args, n); dssw->what_scrollwindow = XtParent(dssw->what_text); XtManageChild(dssw->what_text); /* * Do a layout */ _i18n_WidestWidget( 4, &prev, &max_left_label_width, dssw->date_label, dssw->start_label, dssw->stop_label, dssw->what_label ); _toText = max_left_label_width + 2 * GAP; /* * dssw->date_label, dssw->date_text */ _i18n_WidestWidget( 1, &curr, &widest, dssw->date_label ); _toLabel = _toText - GAP - widest; _i18n_HighestWidgetAdjust( 2, &curr, &highest, dssw->date_label, dssw->date_text ); XtVaSetValues( curr, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, GAP, NULL ); XtVaSetValues( dssw->date_label, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toLabel, NULL ); XtVaSetValues( dssw->date_text, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toText, XmNrightAttachment, XmATTACH_FORM, NULL ); prev = curr; /* * dssw->start_label, dssw->start_text, dssw->start_menu, * dssw->start_ampm_rc_mgr */ _i18n_WidestWidget( 1, &curr, &widest, dssw->start_label ); _toLabel = _toText - GAP - widest; _i18n_WidestWidget( 1, &curr, &widest, dssw->start_text ); _toMenu = _toText + widest + GAP; _i18n_WidestWidget( 1, &curr, &widest, dssw->start_menu ); _toRC = _toMenu + widest + GAP; _i18n_HighestWidgetAdjust( 4, &curr, &highest, dssw->start_label, dssw->start_text, dssw->start_menu, dssw->start_ampm_rc_mgr ); XtVaSetValues( curr, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, prev, XmNtopOffset, GAP, NULL ); XtVaSetValues( dssw->start_label, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toLabel, NULL ); XtVaSetValues( dssw->start_text, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toText, NULL ); XtVaSetValues( dssw->start_menu, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toMenu, NULL ); XtVaSetValues( dssw->start_ampm_rc_mgr, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toRC, NULL ); prev = curr; /* * dssw->stop_label, dssw->stop_text, dssw->stop_menu, * dssw->stop_ampm_rc_mgr */ _i18n_WidestWidget( 1, &curr, &widest, dssw->stop_label ); _toLabel = _toText - GAP - widest; _i18n_WidestWidget( 1, &curr, &widest, dssw->stop_text ); _toMenu = _toText + widest + GAP; _i18n_WidestWidget( 1, &curr, &widest, dssw->stop_menu ); _toRC = _toMenu + widest + GAP; _i18n_HighestWidgetAdjust( 4, &curr, &highest, dssw->stop_label, dssw->stop_text, dssw->stop_menu, dssw->stop_ampm_rc_mgr ); XtVaSetValues( curr, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, prev, XmNtopOffset, GAP, NULL ); XtVaSetValues( dssw->stop_label, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toLabel, NULL ); XtVaSetValues( dssw->stop_text, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toText, NULL ); XtVaSetValues( dssw->stop_menu, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toMenu, NULL ); XtVaSetValues( dssw->stop_ampm_rc_mgr, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toRC, NULL ); prev = curr; /* * dssw->what_label, dssw->what_scrollwindow */ _i18n_WidestWidget( 1, &curr, &widest, dssw->what_label ); _toLabel = _toText - GAP - widest; XtVaSetValues( dssw->what_label, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, prev, XmNtopOffset, GAP, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toLabel, NULL ); XtVaSetValues( dssw->what_scrollwindow, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, prev, XmNtopOffset, GAP, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, _toText, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL ); }
extern Boolean dssw_attrs_to_form(DSSW *dssw, Dtcm_appointment *appt) { int start_hr, stop_hr; char *what; time_t tick, end_tick = 0; Boolean showtime; Props *p = (Props *)dssw->cal->properties; DisplayType dt = get_int_prop(p, CP_DEFAULTDISP); _csa_iso8601_to_tick(appt->time->value->item.date_time_value, &tick); showtime = showtime_set(appt); if (appt->end_time) _csa_iso8601_to_tick(appt->end_time->value->item.\ date_time_value, &end_tick); what = appt->what->value->item.string_value; /* ** Set the date, start, stop, and what fields */ if (!showtime || magic_time(tick)) { dssw->start_val.val[0] = '\0'; dssw->stop_val.val[0] = '\0'; } else { if ((start_hr = hour(tick)) < 12) dssw->start_val.block = TIME_AM; else dssw->start_val.block = TIME_PM; if (dt == HOUR12) { if (start_hr == 0) start_hr = 12; else if (start_hr > 12) start_hr -= 12; sprintf(dssw->start_val.val, "%2d:%02d", start_hr, minute(tick)); } else sprintf(dssw->start_val.val, "%02d%02d", start_hr, minute(tick)); if (end_tick) { if ((stop_hr = hour(end_tick)) < 12) dssw->stop_val.block = TIME_AM; else dssw->stop_val.block = TIME_PM; if (dt == HOUR12) { if (stop_hr == 0) stop_hr = 12; else if (stop_hr > 12) stop_hr -= 12; sprintf(dssw->stop_val.val, "%2d:%02d", stop_hr, minute(end_tick)); } else sprintf(dssw->stop_val.val, "%02d%02d", stop_hr, minute(end_tick)); } else { /* no end time */ sprintf(dssw->stop_val.val, "\0"); dssw->stop_val.block = TIME_AM; } } /* limit the size of the text pulled out of the appointment. */ if (what) { strncpy(dssw->what_val, what, WHAT_LEN - 1); dssw->what_val[WHAT_LEN-1] = NULL; } set_dssw_vals(dssw, tick); return True; }
/* ** This function will consume form values and stuff them into an appointment. */ extern Boolean dssw_form_to_todo(DSSW *dssw, Dtcm_appointment *a, char *name, Tick t) { time_t start_tick, stop_tick; char ampm_buf[BUFSIZ], buf[BUFSIZ]; Props *p = (Props *)dssw->cal->properties; Props_pu *pu = (Props_pu *)dssw->cal->properties_pu; DisplayType dt = get_int_prop(p, CP_DEFAULTDISP); get_dssw_vals(dssw, t); /* * Todo does not have end time. So to distinguish between this * and the editor, zero this out. */ sprintf(dssw->stop_val.val, "\0"); if (blank_buf(dssw->date_val)) { editor_err_msg(dssw->parent, name, MISSING_DATE, pu->xm_error_pixmap); return False; } if (!blank_buf(dssw->start_val.val)) { if (!valid_time(p, dssw->start_val.val)) { editor_err_msg(dssw->parent, name, INVALID_TIME, pu->xm_error_pixmap); return False; } if (dt == HOUR12) { if (dssw->start_val.block == TIME_AM) sprintf(ampm_buf, "am"); else sprintf(ampm_buf, "pm"); } else ampm_buf[0] = '\0'; sprintf(buf, "%s %s%s", dssw->date_val, dssw->start_val.val, ampm_buf); /* * No check here for stop time. */ } else { editor_err_msg(dssw->parent, name, MISSING_TIME, pu->xm_error_pixmap); return False; } start_tick = cm_getdate(buf, NULL); if(start_tick < 0) { editor_err_msg(dssw->parent, name, INVALID_DATE, pu->xm_error_pixmap); return False; } a->time->value->item.date_time_value = (char *) malloc(BUFSIZ); _csa_tick_to_iso8601(start_tick, a->time->value->item.date_time_value); a->what->value->item.string_value = (char *)cm_strdup(dssw->what_val); a->show_time->value->item.sint32_value = True; free(a->end_time->value); a->end_time->value = NULL; return True; }
extern Boolean dssw_form_flags_to_appt(DSSW *dssw, Dtcm_appointment *a, char *name, Tick t, int *flagsP) { time_t start_tick, stop_tick; char ampm_buf[BUFSIZ], buf[BUFSIZ]; Props *p = (Props *)dssw->cal->properties; Props_pu *pu = (Props_pu *)dssw->cal->properties_pu; DisplayType dt = get_int_prop(p, CP_DEFAULTDISP); int flags = 0; if (flagsP == (int *)NULL) flagsP = &flags; /* ** If neither start nor end times exist, then the start time is set ** to 3:41am (magic time) and the end time to 3:41 plus one minute. */ get_dssw_vals(dssw, t); if (blank_buf(dssw->date_val)) { editor_err_msg(dssw->parent, name, MISSING_DATE, pu->xm_error_pixmap); return False; } if (!blank_buf(dssw->start_val.val)) { if (!valid_time(p, dssw->start_val.val)) { if (a->type->value->item.sint32_value == CSA_TYPE_TODO) editor_err_msg(dssw->parent, name, INVALID_TIME_DUE, pu->xm_error_pixmap); else editor_err_msg(dssw->parent, name, INVALID_START, pu->xm_error_pixmap); return False; } if (dt == HOUR12) { /* am and pm should not be translated. They are only * used in the date parsing code and never shown to * the user. */ if (dssw->start_val.block == TIME_AM) sprintf(ampm_buf, "am"); else sprintf(ampm_buf, "pm"); } else ampm_buf[0] = '\0'; sprintf(buf, "%s %s%s", dssw->date_val, dssw->start_val.val, ampm_buf); if (!blank_buf(dssw->stop_val.val) && !valid_time(p, dssw->stop_val.val)) { editor_err_msg(dssw->parent, name, INVALID_STOP, pu->xm_error_pixmap); return False; } } else if (!blank_buf(dssw->stop_val.val)) { editor_err_msg(dssw->parent, name, MISSING_START, pu->xm_error_pixmap); return False; } else sprintf(buf, "%s 3:41am", dssw->date_val); start_tick = cm_getdate(buf, NULL); if(start_tick < 0) { editor_err_msg(dssw->parent, name, INVALID_DATE, pu->xm_error_pixmap); return False; } if (blank_buf(dssw->what_val) && blank_buf(dssw->start_val.val) && blank_buf(dssw->stop_val.val)) { editor_err_msg(dssw->parent, name, INVALID_NOTIME_APPT, pu->xm_error_pixmap); return False; } a->time->value->item.date_time_value = (char *) malloc(BUFSIZ); _csa_tick_to_iso8601(start_tick, a->time->value->item.date_time_value); a->what->value->item.string_value = (char *)cm_strdup(dssw->what_val); a->show_time->value->item.sint32_value = True; if (!blank_buf(dssw->stop_val.val)) { if (dt == HOUR12) { /* am and pm should not be translated. They are only * used in the date parsing code and never shown to * the user. */ if (dssw->stop_val.block == TIME_AM) sprintf(ampm_buf, "am"); else sprintf(ampm_buf, "pm"); } else ampm_buf[0] = '\0'; sprintf(buf, "%s %s%s", dssw->date_val, dssw->stop_val.val, ampm_buf); if ((stop_tick = cm_getdate(buf, NULL)) <= 0) { editor_err_msg(dssw->parent, name, INVALID_DATE, pu->xm_error_pixmap); return False; } if (stop_tick < start_tick) { if (*flagsP == 0) { char *title = XtNewString(catgets(calendar->DT_catd, 1, 248, "Calendar : Schedule Appointment")); char *ident1 = XtNewString(catgets(calendar->DT_catd, 1, 923, "Cancel")); char *ident2 = XtNewString(catgets(calendar->DT_catd, 1, 250, "Next Day")); sprintf(buf, "%s", catgets(calendar->DT_catd, 1, 247, "This appointment has an end time earlier than\nits begin time. Do you want to\nschedule it into the next day?")); *flagsP = dialog_popup(dssw->parent, DIALOG_TITLE, title, DIALOG_TEXT, buf, BUTTON_IDENT, -1, ident1, BUTTON_IDENT, DSSW_NEXT_DAY, ident2, DIALOG_IMAGE, pu->xm_question_pixmap, NULL); XtFree(ident2); XtFree(ident1); XtFree(title); } switch (*flagsP) { case DSSW_NEXT_DAY: stop_tick += daysec; break; default: *flagsP = 0; return False; } } a->end_time->value->item.date_time_value = (char *) malloc(BUFSIZ); _csa_tick_to_iso8601(stop_tick, a->end_time->value->item.date_time_value); } else if (blank_buf(dssw->start_val.val)) { a->end_time->value->item.date_time_value = (char *) malloc(BUFSIZ); _csa_tick_to_iso8601(start_tick + minsec, a->end_time->value->item.date_time_value); a->show_time->value->item.sint32_value = False; } else { free(a->end_time->value); a->end_time->value = NULL; } return True; }
static void prompt_for_insert(Props *p) { char date_str[BUFSIZ], what_buffer[BUFSIZ], buf[BUFSIZ], *timecopy; int index, next, valid = FALSE; DisplayType dt = get_int_prop(p, CP_DEFAULTDISP); format_tick(now(), get_int_prop(p, CP_DATEORDERING), get_int_prop(p, CP_DATESEPARATOR), date_str); printf("%s", catgets(DT_catd, 1, 193, "Please enter the information for the appointment you wish to add.\nDefaults will be shown in parentheses.\n")); prompt_for_line(catgets(DT_catd, 1, 194, "Calendar (%s): "), cm_get_credentials(), cm_target); prompt_for_line(catgets(DT_catd, 1, 195, "Date (%s): "), date_str, cm_date); while (valid != TRUE) { format_time(now(), dt, cm_start); prompt_for_line(catgets(DT_catd, 1, 196, "Start (%s): "), cm_start, cm_start); if (cm_start && cm_start[0]) { timecopy = (char *)cm_strdup(cm_start); if (valid_time(p, timecopy)) valid = TRUE; else printf("%s", catgets(DT_catd, 1, 197, "You have entered an invalid time. Please try again:\n")); free(timecopy); } } sprintf(buf, "%s %s", date_str, cm_start); next = (int) cm_getdate(buf, NULL); next = next + hrsec; format_time(next, dt, cm_end); if (cm_start && cm_start[0]) prompt_for_line( catgets(DT_catd, 1, 198, "End (%s): "), cm_end, cm_end); else prompt_for_line( catgets(DT_catd, 1, 199, "End (%s): "), "None", cm_end); strcpy(cm_repeatstr, catgets(DT_catd, 1, 200, "One Time")); prompt_for_line(catgets(DT_catd, 1, 201, "Repeat (%s): "), cm_repeatstr, cm_repeatstr); if (strcmp(cm_repeatstr, catgets(DT_catd, 1, 200, "One Time"))) { sprintf(buf, "%s", catgets(DT_catd, 1, 203, "no default")); prompt_for_line( catgets(DT_catd, 1, 204, "For (%s): "), buf, cm_for); } printf("%s", catgets(DT_catd, 1, 205, "What (you may enter up to 5 lines, use ^D to finish):\n")); cm_what[0] = NULL; for (index = 0; index < 5; index++) { *what_buffer = '\0'; fgets (what_buffer, sizeof(what_buffer), stdin); if (strlen(what_buffer) && what_buffer[strlen(what_buffer)-1] == '\n') what_buffer[strlen(what_buffer)-1] = '\0'; if (what_buffer[0] == '\000') break; else { strcat(cm_what, what_buffer); strcat(cm_what, "\\n"); } memset(what_buffer, '\000', 256); } }
extern void mail_it(XtPointer client_data, XtIntervalId *interval_id, CSA_reminder_reference *r) { Calendar *c = (Calendar *)client_data; int hr; Lines *lines = NULL, *l = NULL; Props *p = (Props *)c->properties; Boolean pm; DisplayType dt = get_int_prop(p, CP_DEFAULTDISP); Dtcm_appointment *appt; char subbuf[BUFSIZ], bodybuf[BUFSIZ]; char datebuf[200], startbuf[100], stopbuf[100]; char whatbuf[BUFSIZ]; char *to; CSA_return_code stat; Tick start, stop; char *addr_data = NULL; appt = allocate_appt_struct(appt_read, c->general->version, CSA_ENTRY_ATTR_START_DATE_I, CSA_ENTRY_ATTR_SUMMARY_I, CSA_ENTRY_ATTR_ORGANIZER_I, CSA_X_DT_ENTRY_ATTR_SHOWTIME_I, CSA_ENTRY_ATTR_END_DATE_I, CSA_ENTRY_ATTR_MAIL_REMINDER_I, NULL); stat = query_appt_struct(c->cal_handle, r->entry, appt); backend_err_msg(c->frame, c->calname, stat, ((Props_pu *)c->properties_pu)->xm_error_pixmap); if (stat != CSA_SUCCESS) { free_appt_struct(&appt); return; } /* compose to field */ if (appt->mail->value->item.reminder_value->reminder_data.data == NULL || (appt->mail->value->item.reminder_value->reminder_data.size == 0)) { /* empty recipient */ if (debug) fprintf(stderr, "%s", catgets(c->DT_catd, 1, 1, "dtcm: empty recipient in mail reminder\n")); to = appt->author->value->item.calendar_user_value->user_name; } else { addr_data = calloc(appt->mail->value->item.reminder_value->reminder_data.size + 1, 1); strncpy(addr_data, (char *) appt->mail->value->item.reminder_value->reminder_data.data, appt->mail->value->item.reminder_value->reminder_data.size); to = addr_data; } /* compose subject field */ lines = text_to_lines(appt->what->value->item.string_value, 5); sprintf(subbuf, catgets(c->DT_catd, 1, 2, "Reminder- %s"), (lines) ? lines->s : "\0"); /* compose message body */ _csa_iso8601_to_tick(appt->time->value->item.date_time_value, &start); format_tick(start, ORDER_MDY, SEPARATOR_SLASH, datebuf); if (showtime_set(appt) && !magic_time(start)) { hr = hour(start); pm = (dt == HOUR12 && !adjust_hour(&hr)) ? True : False; if (dt == HOUR12) { sprintf(startbuf, "%2d:%02d %s", hr, minute(start), pm ? "pm" : "am"); } else { sprintf(startbuf, "%02d%02d", hr, minute(start)); } } else startbuf[0] = '\0'; if (showtime_set(appt) && !magic_time(start) && appt->end_time) { _csa_iso8601_to_tick(appt->end_time->value->\ item.date_time_value, &stop); hr = hour(stop); pm = (dt == HOUR12 && !adjust_hour(&hr)) ? True : False; if (dt == HOUR12) { sprintf(stopbuf, "%2d:%02d %s", hr, minute(stop), pm ? catgets(c->DT_catd, 1, 3, "pm") : catgets(c->DT_catd, 1, 4, "am")); } else { sprintf(stopbuf, "%02d%02d", hr, minute(stop)); } } else stopbuf[0] = '\0'; if (l = lines) { sprintf(whatbuf, "%s\n", l->s); l = l->next; } else whatbuf[0] = '\0'; while(l != NULL) { strcat(whatbuf, "\t\t"); strcat(whatbuf, l->s); strcat(whatbuf, "\n"); l = l->next; } if (lines) destroy_lines(lines); if (stopbuf[0] != '\0') { sprintf(bodybuf, catgets(c->DT_catd, 1, 7, "\n\n\t** Calendar Appointment **\n\n\tDate:\t%s\n\tStart:\t%s\n\tEnd:\t%s\n\tWhat:\t%s"), datebuf, startbuf, stopbuf, whatbuf); } else { sprintf(bodybuf, catgets(c->DT_catd, 1, 1100, "\n\n\t** Calendar To Do Item **\n\n\tDue Date:\t%s\n\tTime Due:\t%s\n\tWhat:\t\t%s"), datebuf, startbuf, whatbuf); } if (debug) { fprintf(stderr, "to = `%s`\n", to); fprintf(stderr, "subject = `%s`\n", subbuf); fprintf(stderr, "body = `%s`\n", bodybuf); } (void)submit_mail(to, subbuf, bodybuf); free_appt_struct(&appt); if (addr_data) free(addr_data); }
static int dsps_create_musb_pdev(struct dsps_glue *glue, struct platform_device *parent) { struct musb_hdrc_platform_data pdata; struct resource resources[2]; struct resource *res; struct device *dev = &parent->dev; struct musb_hdrc_config *config; struct platform_device *musb; struct device_node *dn = parent->dev.of_node; int ret; memset(resources, 0, sizeof(resources)); res = platform_get_resource_byname(parent, IORESOURCE_MEM, "mc"); if (!res) { dev_err(dev, "failed to get memory.\n"); return -EINVAL; } resources[0] = *res; res = platform_get_resource_byname(parent, IORESOURCE_IRQ, "mc"); if (!res) { dev_err(dev, "failed to get irq.\n"); return -EINVAL; } resources[1] = *res; /* allocate the child platform device */ musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO); if (!musb) { dev_err(dev, "failed to allocate musb device\n"); return -ENOMEM; } musb->dev.parent = dev; musb->dev.dma_mask = &musb_dmamask; musb->dev.coherent_dma_mask = musb_dmamask; musb->dev.of_node = of_node_get(dn); glue->musb = musb; ret = platform_device_add_resources(musb, resources, ARRAY_SIZE(resources)); if (ret) { dev_err(dev, "failed to add resources\n"); goto err; } config = devm_kzalloc(&parent->dev, sizeof(*config), GFP_KERNEL); if (!config) { dev_err(dev, "failed to allocate musb hdrc config\n"); ret = -ENOMEM; goto err; } pdata.config = config; pdata.platform_ops = &dsps_ops; config->num_eps = get_int_prop(dn, "mentor,num-eps"); config->ram_bits = get_int_prop(dn, "mentor,ram-bits"); pdata.mode = get_musb_port_mode(dev); /* DT keeps this entry in mA, musb expects it as per USB spec */ pdata.power = get_int_prop(dn, "mentor,power") / 2; config->multipoint = of_property_read_bool(dn, "mentor,multipoint"); ret = platform_device_add_data(musb, &pdata, sizeof(pdata)); if (ret) { dev_err(dev, "failed to add platform_data\n"); goto err; } ret = platform_device_add(musb); if (ret) { dev_err(dev, "failed to register musb device\n"); goto err; } return 0; err: platform_device_put(musb); return ret; }
/* ** Functions to build and popup the postup reminder */ extern void postup_show_proc(Calendar *c, CSA_reminder_reference *r) { int start_hr, stop_hr; char text[BUFSIZ]; time_t st, sp = 0; Lines *lines, *l = NULL; Props *p = (Props *)c->properties; Widget pu_frame, pu_base_form, pu_text_form, separator, pu_form, button_form, pu_date, pu_range, pu_image, pu_close, line, last_line; Boolean start_am, stop_am; XmString xmstr; CSA_return_code stat; DisplayType dis_t = get_int_prop(p, CP_DEFAULTDISP); OrderingType ord_t = get_int_prop(p, CP_DATEORDERING); SeparatorType sep_t = get_int_prop(p, CP_DATESEPARATOR); Dtcm_appointment *appt; char *title; if (!c->postup) c->postup = XtAppCreateShell("calendar_postup", "Dtcm", xmDialogShellWidgetClass, c->xcontext->display, NULL, 0); /* ** Create the Motif objects */ title = XtNewString(catgets(c->DT_catd, 1, 839, "Calendar : Reminder")); pu_frame = XtVaCreatePopupShell("pu_frame", topLevelShellWidgetClass, c->postup, XmNtitle, title, XmNmwmFunctions, MWM_FUNC_MOVE | MWM_FUNC_CLOSE, XmNdeleteResponse, XmDESTROY, NULL); XtFree(title); pu_base_form = XtVaCreateWidget("pu_base_form", xmFormWidgetClass, pu_frame, NULL); pu_text_form = XtVaCreateWidget("pu_test_form", xmFormWidgetClass, pu_base_form, XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNleftOffset, 1, XmNrightOffset, 1, XmNtopOffset, 1, NULL); pu_image = XtVaCreateWidget("pu_image", xmLabelGadgetClass, pu_text_form, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 5, XmNlabelType, XmPIXMAP, XmNlabelPixmap, ((Props_pu *)c->properties_pu)->postup_pixmap, NULL); button_form = XtVaCreateWidget("pu_form", xmFormWidgetClass, pu_base_form, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 2, XmNleftOffset, 1, XmNrightOffset, 1, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNfractionBase, 3, NULL); xmstr = XmStringCreateLocalized(catgets(c->DT_catd, 1, 680, "Close")); pu_close = XtVaCreateManagedWidget("close", xmPushButtonWidgetClass, button_form, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_POSITION, XmNrightAttachment, XmATTACH_POSITION, XmNleftPosition, 1, XmNrightPosition, 2, XmNbottomOffset, 1, XmNlabelString, xmstr, NULL); XmStringFree(xmstr); separator = XtVaCreateWidget("separator", xmSeparatorGadgetClass, pu_base_form, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, button_form, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, pu_text_form, XmNtopOffset, 1, NULL); pu_form = XtVaCreateWidget("pu_form", xmFormWidgetClass, pu_text_form, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 1, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, pu_image, XmNverticalSpacing, 10, NULL); pu_date = XtVaCreateWidget("pu_date", xmLabelGadgetClass, pu_form, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, NULL); pu_range = XtVaCreateWidget("pu_range", xmLabelGadgetClass, pu_form, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, pu_date, XmNtopOffset, 8, NULL); XtAddCallback(pu_close, XmNactivateCallback, close_cb, pu_frame); appt = allocate_appt_struct(appt_read, c->general->version, CSA_ENTRY_ATTR_START_DATE_I, CSA_ENTRY_ATTR_END_DATE_I, CSA_ENTRY_ATTR_SUMMARY_I, CSA_X_DT_ENTRY_ATTR_SHOWTIME_I, NULL); stat = query_appt_struct(c->cal_handle, r->entry, appt); backend_err_msg(c->frame, c->calname, stat, ((Props_pu *)c->properties_pu)->xm_error_pixmap); if (stat != CSA_SUCCESS) { free_appt_struct(&appt); return; } _csa_iso8601_to_tick(appt->time->value->item.date_time_value, &st); if (appt->end_time) _csa_iso8601_to_tick(appt->end_time->value->\ item.date_time_value, &sp); l = lines = text_to_lines(appt->what->value->item.string_value, 5); last_line = 0; while (l) { xmstr = XmStringCreateLocalized(l->s); line = XtVaCreateWidget("text_line", xmLabelGadgetClass, pu_text_form, XmNlabelString, xmstr, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, pu_form, XmNleftOffset, 15, NULL); XmStringFree(xmstr); if (last_line) XtVaSetValues(line, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, last_line, XmNtopOffset, 8, NULL); else XtVaSetValues(line, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 8, NULL); last_line = line; l = l->next; } if (lines) destroy_lines(lines); /* ** Now fill in the correct information */ set_date_in_widget(st, pu_date, ord_t, sep_t); if (!showtime_set(appt) || magic_time(st)) text[0] = '\0'; else { start_hr = hour(st); if (sp) stop_hr = hour(sp); if (dis_t == HOUR12) { start_am = adjust_hour(&start_hr); if (sp) { /* NL_COMMENT Message 1087 : This message is used to form the alarm string that appears in the reminder popup. In the C locale it would look something like this: ``From 11:00am to 1:00pm'' In the printf conversion string the $n are: $1 -> start hour $2 -> start minute $3 -> am or pm $4 -> stop hour $5 -> stop minute $6 -> am or pm */ char *am = XtNewString(catgets(c->DT_catd, 1, 4, "am")); char *pm = XtNewString(catgets(c->DT_catd, 1, 3, "pm")); stop_am = adjust_hour(&stop_hr); sprintf(text, catgets(c->DT_catd, 1, 1087, "From %1$2d:%2$02d%3$s to %4$2d:%5$02d%6$s"), start_hr, minute(st), (start_am) ? am : pm, stop_hr, minute(sp), (stop_am) ? am : pm ); XtFree(am); XtFree(pm); } else { /* NL_COMMENT Message 1088 : This message is used to form the alarm string that appears in the reminder popup. It is used when an appt does not have and ``end'' time. In the C locale it would look something like this: ``11:00am'' In the printf conversion string the $n are: $1 -> start hour $2 -> start minute $3 -> am or pm */ char *meridian = XtNewString ((start_am) ? catgets(c->DT_catd, 1, 4, "am"): catgets(c->DT_catd, 1, 3, "pm")); sprintf(text, catgets(c->DT_catd, 1, 1088, "%1$2d:%2$02d%3$s"), start_hr, minute(st), meridian ); XtFree(meridian); } } else { if (sp) { /* NL_COMMENT Message 1089 : This message is used to form the alarm string that appears in the reminder popup. This string is used when a user has asked that times be displayed in 24 hour format. In the C locale it would look something like this: ``From 0100 to 1600'' In the printf conversion string the $n are: $1 -> start hour $2 -> start minute $3 -> stop hour $4 -> stop minute */ sprintf(text, catgets(c->DT_catd, 1, 1089, "From %1$02d%2$02d to %3$02d%4$02d"), start_hr, minute(st), stop_hr, minute(sp)); } else { /* NL_COMMENT Message 1090 : This message is used to form the alarm string that appears in the reminder popup. This string is used when an appt does not have an end time and the user has asked that times be displayed in 24 hour format. In the C locale it would look something like this: ``1600'' In the printf conversion string the $n are: $1 -> start hour $2 -> start minute */ sprintf(text, catgets(c->DT_catd, 1, 1090, "%1$02d%2$02d"), start_hr, minute(st)); } } } free_appt_struct(&appt); xmstr = XmStringCreateLocalized(text); XtVaSetValues(pu_range, XmNlabelString, xmstr, NULL); XmStringFree(xmstr); ManageChildren(pu_form); ManageChildren(pu_base_form); ManageChildren(pu_text_form); XtManageChild(pu_base_form); XtVaSetValues(button_form, XmNdefaultButton, pu_close, NULL); XtVaSetValues(button_form, XmNcancelButton, pu_close, NULL); XtPopup(pu_frame, XtGrabNone); DtWsmOccupyAllWorkspaces(c->xcontext->display, XtWindow(pu_frame)); }