2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these librararies and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 /* $XConsortium: cmxdr.c /main/1 1996/04/21 19:22:14 drk $ */
25 * (c) Copyright 1993, 1994 Hewlett-Packard Company
26 * (c) Copyright 1993, 1994 International Business Machines Corp.
27 * (c) Copyright 1993, 1994 Novell, Inc.
28 * (c) Copyright 1993, 1994 Sun Microsystems, Inc.
32 * xdr routines for xapia csa data structures
35 #include <EUSCompat.h>
40 /* Functions generated by rtable4.x */
42 * time_t is a typedef which is system dependent
45 xdr_time_t(register XDR *xdrs, time_t *objp)
48 if (!xdr_int(xdrs, objp))
51 if (!xdr_long(xdrs, objp))
59 * cms_name - a user name or calendar name which is
60 * variable length character string
64 xdr_cms_name(register XDR *xdrs, cms_name *objp)
69 if (!xdr_string(xdrs, objp, ~0))
75 * cms_access_entry - data structure for the access list attribute
79 xdr_cms_access_entry(register XDR *xdrs, cms_access_entry *objp)
84 if (!xdr_string(xdrs, &objp->user, ~0))
86 if (!xdr_u_int(xdrs, &objp->rights))
88 if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof (cms_access_entry),
89 (xdrproc_t) xdr_cms_access_entry))
95 * cms_key consists of the time and the unique
96 * identifier of the entry.
100 xdr_cms_key(register XDR *xdrs, cms_key *objp)
105 if (!xdr_time_t(xdrs, &objp->time))
107 if (!xdr_long(xdrs, &objp->id))
113 xdr_CSA_opaque_data(register XDR *xdrs, CSA_opaque_data *objp)
118 if (!xdr_bytes(xdrs, (char **)&objp->data, (u_int *) &objp->size, ~0))
124 xdr_CSA_reminder(register XDR *xdrs, CSA_reminder *objp)
129 if (!xdr_string(xdrs, &objp->lead_time, ~0))
131 if (!xdr_string(xdrs, &objp->snooze_time, ~0))
133 if (!xdr_u_long(xdrs, &objp->repeat_count))
135 if (!xdr_CSA_opaque_data(xdrs, &objp->reminder_data))
141 xdr_CSA_date_time_entry(register XDR *xdrs, CSA_date_time_entry *objp)
146 if (!xdr_string(xdrs, &objp->date_time, ~0))
148 if (!xdr_pointer(xdrs, (char **)&objp->next,
149 sizeof (CSA_date_time_entry), (xdrproc_t) xdr_CSA_date_time_entry))
155 xdr_cms_attribute_value(register XDR *xdrs, cms_attribute_value *objp)
160 if (!xdr_int(xdrs, &objp->type))
163 switch (objp->type) {
164 case CSA_VALUE_SINT32:
165 case CSA_VALUE_ENUMERATED:
166 if (!xdr_long(xdrs, &objp->item.sint32_value))
169 case CSA_VALUE_BOOLEAN:
170 case CSA_VALUE_FLAGS:
171 case CSA_VALUE_UINT32:
172 if (!xdr_u_long(xdrs, &objp->item.uint32_value))
175 case CSA_VALUE_STRING:
176 case CSA_VALUE_CALENDAR_USER:
177 case CSA_VALUE_DATE_TIME:
178 case CSA_VALUE_DATE_TIME_RANGE:
179 case CSA_VALUE_TIME_DURATION:
180 if (!xdr_string(xdrs, &objp->item.string_value, ~0))
183 case CSA_VALUE_ACCESS_LIST:
184 if (!xdr_pointer(xdrs, (char **)&objp->item.access_list_value,
185 sizeof (cms_access_entry),
186 (xdrproc_t) xdr_cms_access_entry))
189 case CSA_VALUE_DATE_TIME_LIST:
190 if (!xdr_pointer(xdrs,
191 (char **)&objp->item.date_time_list_value,
192 sizeof (CSA_date_time_entry),
193 (xdrproc_t) xdr_CSA_date_time_entry))
196 case CSA_VALUE_REMINDER:
197 if (!xdr_pointer(xdrs,
198 (char **)&objp->item.reminder_value,
199 sizeof (CSA_reminder), (xdrproc_t) xdr_CSA_reminder))
202 case CSA_VALUE_OPAQUE_DATA:
203 if (!xdr_pointer(xdrs, (char **)&objp->item.opaque_data_value,
204 sizeof (CSA_opaque_data), (xdrproc_t) xdr_CSA_opaque_data))
212 * num contains the hashed number for the associated name assigned
213 * by the server. Client should not change its value.
214 * If it's zero, name is not hashed yet.
218 xdr_cms_attr_name(register XDR *xdrs, cms_attr_name *objp)
223 if (!xdr_short(xdrs, &objp->num))
225 if (!xdr_string(xdrs, &objp->name, ~0))
235 xdr_cms_attribute(register XDR *xdrs, cms_attribute *objp)
240 if (!xdr_cms_attr_name(xdrs, &objp->name))
242 if (!xdr_pointer(xdrs, (char **)&objp->value,
243 sizeof (CSA_attribute_value), (xdrproc_t) xdr_cms_attribute_value))
250 * An entry is identified by an identifier unique within the calendar
251 * and has a variable number of attributes associated with it.
255 xdr_cms_entry(register XDR *xdrs, cms_entry *objp)
260 if (!xdr_cms_key(xdrs, &objp->key))
262 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
263 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
265 if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof (cms_entry),
266 (xdrproc_t) xdr_cms_entry))
273 * cms_enumerate_calendar_attr_res
275 * If stat is CSA_SUCCESS, names contains an array of names.
279 xdr_cms_enumerate_calendar_attr_res(register XDR *xdrs, cms_enumerate_calendar_attr_res *objp)
284 if (!xdr_u_long(xdrs, &objp->stat))
286 if (!xdr_array(xdrs, (char **)&objp->names, (u_int *) &objp->num_names,
287 ~0, sizeof (cms_attr_name), (xdrproc_t) xdr_cms_attr_name))
294 * cms_list_calendars_res
296 * If stat is CSA_SUCCESS, names contains an array of names.
300 xdr_cms_list_calendars_res(register XDR *xdrs, cms_list_calendars_res *objp)
305 if (!xdr_u_long(xdrs, &objp->stat))
307 if (!xdr_array(xdrs, (char **)&objp->names, (u_int *) &objp->num_names,
308 ~0, sizeof (cms_name), (xdrproc_t) xdr_cms_name))
315 * cms_open_args - used by CMS_OPEN_CALENDAR
319 xdr_cms_open_args(register XDR *xdrs, cms_open_args *objp)
324 if (!xdr_string(xdrs, &objp->cal, ~0))
326 if (!xdr_int(xdrs, &objp->pid))
333 * cms_open_res - returned by CMS_OPEN_CALENDAR
335 * If stat is DtCm_OK,
336 * svr_vers contains the version number of the server,
337 * file_vers contains the version number of the callog file,
338 * user_access is the calling user's access right to the calendar
339 * num_attrs indicates the size of the array pointed to by attrs,
340 * and attrs contains an array of calendar attributes.
344 xdr_cms_open_res(register XDR *xdrs, cms_open_res *objp)
349 if (!xdr_u_long(xdrs, &objp->stat))
351 if (!xdr_int(xdrs, &objp->svr_vers))
353 if (!xdr_int(xdrs, &objp->file_vers))
355 if (!xdr_u_int(xdrs, &objp->user_access))
357 if (!xdr_array(xdrs, (char **)&objp->attrs, &objp->num_attrs,
358 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
365 * cms_create_args - used by CMS_CREATE_CALENDAR
369 xdr_cms_create_args(register XDR *xdrs, cms_create_args *objp)
374 if (!xdr_string(xdrs, &objp->cal, ~0))
376 if (!xdr_string(xdrs, &objp->char_set, ~0))
378 if (!xdr_int(xdrs, &objp->pid))
380 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
381 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
388 * cms_remove_args - used by CMS_REMOVE_CALENDAR
392 xdr_cms_remove_args(register XDR *xdrs, cms_remove_args *objp)
397 if (!xdr_string(xdrs, &objp->cal, ~0))
399 if (!xdr_int(xdrs, &objp->pid))
406 * cms_register_args - used by CMS_REGISTER and CMS_UNREGISTER
410 xdr_cms_register_args(register XDR *xdrs, cms_register_args *objp)
415 if (!xdr_string(xdrs, &objp->cal, ~0))
417 if (!xdr_u_int(xdrs, &objp->update_type))
419 if (!xdr_u_long(xdrs, &objp->prognum))
421 if (!xdr_u_long(xdrs, &objp->versnum))
423 if (!xdr_u_long(xdrs, &objp->procnum))
425 if (!xdr_int(xdrs, &objp->pid))
432 * cms_get_cal_attr_res - used by CMS_GET_CALENDAR_ATTR
434 * If stat is CSA_SUCCESS, attrs contains an array of attributes.
438 xdr_cms_get_cal_attr_res(register XDR *xdrs, cms_get_cal_attr_res *objp)
443 if (!xdr_u_long(xdrs, &objp->stat))
445 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
446 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
453 * cms_get_cal_attr_args - used by CMS_GET_CALENDAR_ATTR
457 xdr_cms_get_cal_attr_args(register XDR *xdrs, cms_get_cal_attr_args *objp)
462 if (!xdr_string(xdrs, &objp->cal, ~0))
464 if (!xdr_array(xdrs, (char **)&objp->names, (u_int *) &objp->num_names,
465 ~0, sizeof (cms_attr_name), (xdrproc_t) xdr_cms_attr_name))
472 * cms_set_cal_attr_args - used by CMS_SET_CALENDAR_ATTR
476 xdr_cms_set_cal_attr_args(register XDR *xdrs, cms_set_cal_attr_args *objp)
481 if (!xdr_string(xdrs, &objp->cal, ~0))
483 if (!xdr_int(xdrs, &objp->pid))
485 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
486 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
493 * cms_archive_res - used by CMS_ARCHIVE
495 * If stat is CSA_SUCCESS, data contains the data to be archived
499 xdr_cms_archive_res(register XDR *xdrs, cms_archive_res *objp)
504 if (!xdr_u_long(xdrs, &objp->stat))
506 if (!xdr_string(xdrs, &objp->data, ~0))
513 * cms_archive_args - used by CMS_ARCHIVE
517 xdr_cms_archive_args(register XDR *xdrs, cms_archive_args *objp)
522 if (!xdr_string(xdrs, &objp->cal, ~0))
524 if (!xdr_bool(xdrs, &objp->delete))
526 if (!xdr_string(xdrs, &objp->char_set, ~0))
528 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
529 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
531 if (!xdr_array(xdrs, (char **)&objp->ops, (u_int *) &objp->num_attrs,
532 ~0, sizeof (CSA_enum), (xdrproc_t) xdr_long))
539 * cms_restore_args - used by CMS_RESTORE
543 xdr_cms_restore_args(register XDR *xdrs, cms_restore_args *objp)
548 if (!xdr_string(xdrs, &objp->cal, ~0))
550 if (!xdr_string(xdrs, &objp->data, ~0))
552 if (!xdr_string(xdrs, &objp->char_set, ~0))
554 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
555 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
557 if (!xdr_array(xdrs, (char **)&objp->ops, (u_int *) &objp->num_attrs,
558 ~0, sizeof (CSA_enum), (xdrproc_t) xdr_long))
569 xdr_cms_reminder_ref(register XDR *xdrs, cms_reminder_ref *objp)
574 if (!xdr_string(xdrs, &objp->reminder_name, ~0))
576 if (!xdr_string(xdrs, &objp->entryid, ~0))
578 if (!xdr_cms_key(xdrs, &objp->key))
580 if (!xdr_time_t(xdrs, &objp->runtime))
582 if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof (cms_reminder_ref),
583 (xdrproc_t) xdr_cms_reminder_ref))
590 * cms_reminder_res - used by CMS_LOOKUP_REMINDER
592 * If stat is CSA_SUCCESS, rems contains an array of reminders.
596 xdr_cms_reminder_res(register XDR *xdrs, cms_reminder_res *objp)
601 if (!xdr_u_long(xdrs, &objp->stat))
603 if (!xdr_pointer(xdrs, (char **)&objp->rems, sizeof (cms_reminder_ref),
604 (xdrproc_t) xdr_cms_reminder_ref))
611 * cms_reminder_args - used by CMS_LOOKUP_REMINDER
615 xdr_cms_reminder_args(register XDR *xdrs, cms_reminder_args *objp)
620 if (!xdr_string(xdrs, &objp->cal, ~0))
622 if (!xdr_time_t(xdrs, &objp->tick))
624 if (!xdr_array(xdrs, (char **)&objp->names, (u_int *) &objp->num_names,
625 ~0, sizeof (cms_attr_name), (xdrproc_t) xdr_cms_attr_name))
634 * If stat is CSA_SUCCESS, entries contains an array of entries.
638 xdr_cms_entries_res(register XDR *xdrs, cms_entries_res *objp)
643 if (!xdr_u_long(xdrs, &objp->stat))
645 if (!xdr_pointer(xdrs, (char **)&objp->entries, sizeof (cms_entry),
646 (xdrproc_t) xdr_cms_entry))
653 * cms_lookup_entries_args - used by CMS_LOOKUP_ENTRIES
657 xdr_cms_lookup_entries_args(register XDR *xdrs, cms_lookup_entries_args *objp)
662 if (!xdr_string(xdrs, &objp->cal, ~0))
664 if (!xdr_string(xdrs, &objp->char_set, ~0))
666 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
667 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
669 if (!xdr_array(xdrs, (char **)&objp->ops, (u_int *) &objp->num_attrs,
670 ~0, sizeof (CSA_enum), (xdrproc_t) xdr_long))
677 * cms_enumerate_args - used by CMS_ENUERATE_SEQUENCE
681 xdr_cms_enumerate_args(register XDR *xdrs, cms_enumerate_args *objp)
686 if (!xdr_string(xdrs, &objp->cal, ~0))
688 if (!xdr_long(xdrs, &objp->id))
690 if (!xdr_long(xdrs, &objp->start))
692 if (!xdr_long(xdrs, &objp->end))
698 * If stat is CSA_SUCCESS, attrs contains an array of
703 xdr_cms_get_entry_attr_res_item(
705 cms_get_entry_attr_res_item *objp)
710 if (!xdr_u_long(xdrs, &objp->stat))
712 if (!xdr_cms_key(xdrs, &objp->key))
714 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
715 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
717 if (!xdr_pointer(xdrs, (char **)&objp->next,
718 sizeof (cms_get_entry_attr_res_item),
719 (xdrproc_t) xdr_cms_get_entry_attr_res_item))
726 * cms_get_entry_attr_res - used by CMS_GET_ENTRY_ATTR
728 * If stat is CSA_SUCCESS, entries contains an array of
729 * cms_get_entry_attr_res_item structures.
733 xdr_cms_get_entry_attr_res(register XDR *xdrs, cms_get_entry_attr_res *objp)
738 if (!xdr_u_long(xdrs, &objp->stat))
740 if (!xdr_pointer(xdrs, (char **)&objp->entries,
741 sizeof (cms_get_entry_attr_res_item),
742 (xdrproc_t) xdr_cms_get_entry_attr_res_item))
749 * cms_get_entry_attr_args - used by CMS_GET_ENTRY_ATTR
753 xdr_cms_get_entry_attr_args(register XDR *xdrs, cms_get_entry_attr_args *objp)
758 if (!xdr_string(xdrs, &objp->cal, ~0))
760 if (!xdr_array(xdrs, (char **)&objp->keys, (u_int *) &objp->num_keys,
761 ~0, sizeof (cms_key), (xdrproc_t) xdr_cms_key))
763 if (!xdr_array(xdrs, (char **)&objp->names, (u_int *) &objp->num_names,
764 ~0, sizeof (cms_attr_name), (xdrproc_t) xdr_cms_attr_name))
773 * If stat is CSA_SUCCESS, entry points to an entry.
777 xdr_cms_entry_res(register XDR *xdrs, cms_entry_res *objp)
782 if (!xdr_u_long(xdrs, &objp->stat))
784 if (!xdr_pointer(xdrs, (char **)&objp->entry, sizeof (cms_entry),
785 (xdrproc_t) xdr_cms_entry))
792 * cms_insert_args - used by CMS_INSERT_ENTRY
796 xdr_cms_insert_args(register XDR *xdrs, cms_insert_args *objp)
801 if (!xdr_string(xdrs, &objp->cal, ~0))
803 if (!xdr_int(xdrs, &objp->pid))
805 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
806 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
813 * cms_update_args - used by CMS_UPDATE_ENTRY
817 xdr_cms_update_args(register XDR *xdrs, cms_update_args *objp)
822 if (!xdr_string(xdrs, &objp->cal, ~0))
824 if (!xdr_int(xdrs, &objp->pid))
826 if (!xdr_cms_key(xdrs, &objp->entry))
828 if (!xdr_int(xdrs, &objp->scope))
830 if (!xdr_array(xdrs, (char **)&objp->attrs, (u_int *) &objp->num_attrs,
831 ~0, sizeof (cms_attribute), (xdrproc_t) xdr_cms_attribute))
838 * cms_delete_args - used by CMS_DELETE_ENTRY
842 xdr_cms_delete_args(register XDR *xdrs, cms_delete_args *objp)
847 if (!xdr_string(xdrs, &objp->cal, ~0))
849 if (!xdr_int(xdrs, &objp->pid))
851 if (!xdr_cms_key(xdrs, &objp->entry))
853 if (!xdr_int(xdrs, &objp->scope))