X/Open Corrigenda: U007

Document: Message Store API (XMS)

X/Open CAE Specification, 6/93
X/Open reference C305

Contents

XMS-1.1, XMS-1.2.


Change number : XMS-1.1

Title

Case conventions and contraventions in <xms.h> header

Qualifier

Major Technical

Rationale

Given that some existing implementations may have legitimately followed the case conventions in XMS spec section 2.2, whereas others may have legitimately followed precisely the mixed case naming given in the example <xms.h> header file (in chapter 9), then it is apparent that applications are not guaranteed to be portable.

Any change (either to the case conventions, or to align the names with the conventions) will cause some applications to experience portability problems at compilation time. Bearing in mind that a portability problem exists with the specification in it's current state, it has been decided to align the names with the stated case conventions (all upper case).

It is strongly recommended that applications using mixed case naming are changed to conform to the stated case conventions. .

Change

Align the names with the stated case conventions (all upper case), as specified in section 2.2.

Workaround - to ensure portability between existing XMS implementations:

Due to this inconsistency in the specification, an application using XMS may encounter implementations which provide an <xms.h> header file with the names all in upper case as per the convention, and also implementations which have used the mixed case as listed in the example XMS header file (in XMS CAE specification chapter 9).

If it is desired to guarantee their applications portability across different implementations of this version of the XMS specification it is recommended that the following defines are included in an application after inclusion of the <xms.h> header file.

#ifndef MS_Address
#define MS_Address MS_ADDRESS #define MS_Alert_Indication MS_ALERT_INDICATION
#define MS_Allowed_Content_Types MS_ALLOWED_CONTENT_TYPES
#define MS_Allowed_EITs MS_ALLOWED_EITS
#define MS_Auto_Action_Deregistrations MS_AUTO_ACTION_DEREGISTRATIONS
#define MS_Auto_Action_Registrations MS_AUTO_ACTION_REGISTRATIONS
#define MS_Auto_Action_Request_Problems MS_AUTO_ACTION_REQUEST_PROBLEMS
#define MS_Available_Attribute_Types MS_AVAILABLE_ATTRIBUTE_TYPES
#define MS_Available_Auto_Actions MS_AVAILABLE_AUTO_ACTIONS
#define MS_Change_Credentials MS_CHANGE_CREDENTIALS
#define MS_Child_Entries MS_CHILD_ENTRIES
#define MS_Content_Types_Supported MS_CONTENT_TYPES_SUPPORTED
#define MS_Default_Delivery_Controls MS_DEFAULT_DELIVERY_CONTROLS
#define MS_Deliverable_Content_Types MS_DELIVERABLE_CONTENT_TYPES
#define MS_Deliverable_EIT MS_DELIVERABLE_EIT
#define MS_Deliverable_Max_Content_Len MS_DELIVERABLE_MAX_CONTENT_LEN
#define MS_eitS MS_EITS
#define MS_Fetch_Attribute_Defaults MS_FETCH_ATTRIBUTE_DEFAULTS
#define MS_Fetch_Restriction-Problems MS_FETCH_RESTRICTION-PROBLEMS
#define MS_Fetch_Restrictions MS_FETCH_RESTRICTIONS
#define MS_Filter MS_FILTER
#define MS_IA5_String MS_IA5_STRING
#define MS_Initiator MS_INITIATOR
#define MS_Initiator_Credentials MS_INITIATOR_CREDENTIALS
#define MS_Labels_And_Redirections MS_LABELS_AND_REDIRECTIONS
#define MS_Limit MS_LIMIT
#define MS_List_Attribute_Defaults MS_LIST_ATTRIBUTE_DEFAULTS
#define MS_Max_Content_Length MS_MAX_CONTENT_LENGTH
#define MS_Configuration_Request MS_CONFIGURATION_REQUEST
#define MS_Name MS_NAME
#define MS_OCTET_String MS_OCTET_STRING
#define MS_Override MS_OVERRIDE
#define MS_Permissible_Content_Types MS_PERMISSIBLE_CONTENT_TYPES
#define MS_Permissible_EITS MS_PERMISSIBLE_EITS
#define MS_Permissible_Lowest_Priority MS_PERMISSIBLE_LOWEST_PRIORITY
#define MS_Permissible_Max_Content_Len MS_PERMISSIBLE_MAX_CONTENT_LEN
#define MS_Permissible_Operations MS_PERMISSIBLE_OPERATIONS
#define MS_Range MS_RANGE
#define MS_Responder_Credentials MS_RESPONDER_CREDENTIALS
#define MS_Restrict MS_RESTRICT
#define MS_Security_Context MS_SECURITY_CONTEXT
#define MS_User_Security_Labels MS_USER_SECURITY_LABELS
#define MS_E_action_type_not_subscribed MS_E_ACTION_TYPE_NOT_SUBSCRIBED
#define MS_E_asynchrony_not_supported MS_E_ASYNCHRONY_NOT_SUPPORTED
#define MS_E_attrib_type_not_subscribed MS_E_ATTRIB_TYPE_NOT_SUBSCRIBED
#define MS_E_authentication_error MS_E_AUTHENTICATION_ERROR
#define MS_E_bad_argument MS_E_BAD_ARGUMENT
#define MS_E_bad_class MS_E_BAD_CLASS
#define MS_E_bad_session MS_E_BAD_SESSION
#define MS_E_busy MS_E_BUSY
#define MS_E_child_entry_specified MS_E_CHILD_ENTRY_SPECIFIED
#define MS_E_communications_problem MS_E_COMMUNICATIONS_PROBLEM
#define MS_E_content_length_problem MS_E_CONTENT_LENGTH_PROBLEM
#define MS_E_content_type_problem MS_E_CONTENT_TYPE_PROBLEM
#define MS_E_defer_deliv_cancel_reject MS_E_DEFER_DELIV_CANCEL_REJECT
#define MS_E_delETE_rESTRICTION_PROBLEM MS_E_DELETE_RESTRICTION_PROBLEM
#define MS_E_eit_problem MS_E_EIT_PROBLEM
#define MS_E_elmt_serv_not_subscribed MS_E_ELMT_SERV_NOT_SUBSCRIBED
#define MS_E_feature_not_negotiated MS_E_FEATURE_NOT_NEGOTIATED
#define MS_E_feature_unavailable MS_E_FEATURE_UNAVAILABLE
#define MS_E_inappropriate_for_operatn MS_E_INAPPROPRIATE_FOR_OPERATN
#define MS_E_inappropriate_matching MS_E_INAPPROPRIATE_MATCHING
#define MS_E_inconsistent_request MS_E_INCONSISTENT_REQUEST
#define MS_E_invalid_attribute_value MS_E_INVALID_ATTRIBUTE_VALUE
#define MS_E_invalid_FEATURE MS_E_INVALID_FEATURE
#define MS_E_invalid_parameters MS_E_INVALID_PARAMETERS
#define MS_E_message_submiT_id_invalid MS_E_MESSAGE_SUBMIT_ID_INVALID
#define MS_E_miscellaneous MS_E_MISCELLANEOUS
#define MS_E_no_such_class MS_E_NO_SUCH_CLASS
#define MS_E_no_such_entry MS_E_NO_SUCH_ENTRY
#define MS_E_originator_invalid MS_E_ORIGINATOR_INVALID
#define MS_E_out_of_memory MS_E_OUT_OF_MEMORY
#define MS_E_recipient_improperly_specified MS_E_RECIPIENT_IMPROPERLY_SPECIFIED
#define MS_E_register_rejected MS_E_REGISTER_REJECTED
#define MS_E_remote_bind_error MS_E_REMOTE_BIND_ERROR
#define MS_E_reversed MS_E_REVERSED
#define MS_E_security MS_E_SECURITY
#define MS_E_submission_ctrl_violated MS_E_SUBMISSION_CTRL_VIOLATED
#define MS_E_too_many_operations MS_E_TOO_MANY_OPERATIONS
#define MS_E_too_many_sessions MS_E_TOO_MANY_SESSIONS
#define MS_E_unable_establish_associatn MS_E_UNABLE_ESTABLISH_ASSOCIATN
#define MS_E_unacceptable_securE_contxt MS_E_UNACCEPTABLE_SECURE_CONTXT
#define MS_E_unavailable MS_E_UNAVAILABLE
#define MS_E_unavailable_action_type MS_E_UNAVAILABLE_ACTION_TYPE
#define MS_E_unavailable_attribute_type MS_E_UNAVAILABLE_ATTRIBUTE_TYPE
#define MS_E_unsupported_critical_func MS_E_UNSUPPORTED_CRITICAL_FUNC
#define MS_E_unwilling_to_perfoRM MS_E_UNWILLING_TO_PERFORM
#else
#define MS_ADDRESS MS_Address
#define MS_ALERT_INDICATION MS_Alert_Indication
#define MS_ALLOWED_CONTENT_TYPES MS_Allowed_Content_Types
#define MS_ALLOWED_EITS MS_Allowed_EITs
#define MS_AUTO_ACTION_DEREGISTRATIONS MS_Auto_Action_Deregistrations
#define MS_AUTO_ACTION_REGISTRATIONS MS_Auto_Action_Registrations
#define MS_AUTO_ACTION_REQUEST_PROBLEMS MS_Auto_Action_Request_Problems
#define MS_AVAILABLE_ATTRIBUTE_TYPES MS_Available_Attribute_Types
#define MS_AVAILABLE_AUTO_ACTIONS MS_Available_Auto_Actions
#define MS_CHANGE_CREDENTIALS MS_Change_Credentials
#define MS_CHILD_ENTRIES MS_Child_Entries
#define MS_CONTENT_TYPES_SUPPORTED MS_Content_Types_Supported
#define MS_DEFAULT_DELIVERY_CONTROLS MS_Default_Delivery_Controls
#define MS_DELIVERABLE_CONTENT_TYPES MS_Deliverable_Content_Types
#define MS_DELIVERABLE_EIT MS_Deliverable_EIT
#define MS_DELIVERABLE_MAX_CONTENT_LEN MS_Deliverable_Max_Content_Len
#define MS_EITS MS_eitS
#define MS_FETCH_ATTRIBUTE_DEFAULTS MS_Fetch_Attribute_Defaults
#define MS_FETCH_RESTRICTION-PROBLEMS MS_Fetch_Restriction-Problems
#define MS_FETCH_RESTRICTIONS MS_Fetch_Restrictions
#define MS_FILTER MS_Filter
#define MS_IA5_STRING MS_IA5_String
#define MS_INITIATOR MS_Initiator
#define MS_INITIATOR_CREDENTIALS MS_Initiator_Credentials
#define MS_LABELS_AND_REDIRECTIONS MS_Labels_And_Redirections
#define MS_LIMIT MS_Limit
#define MS_LIST_ATTRIBUTE_DEFAULTS MS_List_Attribute_Defaults
#define MS_MAX_CONTENT_LENGTH MS_Max_Content_Length
#define MS_CONFIGURATION_REQUEST MS_Configuration_Request
#define MS_NAME MS_Name
#define MS_OCTET_STRING MS_OCTET_String
#define MS_OVERRIDE MS_Override
#define MS_PERMISSIBLE_CONTENT_TYPES MS_Permissible_Content_Types
#define MS_PERMISSIBLE_EITS MS_Permissible_EITS
#define MS_PERMISSIBLE_LOWEST_PRIORITY MS_Permissible_Lowest_Priority
#define MS_PERMISSIBLE_MAX_CONTENT_LEN MS_Permissible_Max_Content_Len
#define MS_PERMISSIBLE_OPERATIONS MS_Permissible_Operations
#define MS_RANGE MS_Range
#define MS_RESPONDER_CREDENTIALS MS_Responder_Credentials
#define MS_RESTRICT MS_Restrict
#define MS_SECURITY_CONTEXT MS_Security_Context
#define MS_USER_SECURITY_LABELS MS_User_Security_Labels
#define MS_E_ACTION_TYPE_NOT_SUBSCRIBED MS_E_action_type_not_subscribed
#define MS_E_ASYNCHRONY_NOT_SUPPORTED MS_E_asynchrony_not_supported
#define MS_E_ATTRIB_TYPE_NOT_SUBSCRIBED MS_E_attrib_type_not_subscribed
#define MS_E_AUTHENTICATION_ERROR MS_E_authentication_error
#define MS_E_BAD_ARGUMENT MS_E_bad_argument
#define MS_E_BAD_CLASS MS_E_bad_class
#define MS_E_BAD_SESSION MS_E_bad_session
#define MS_E_BUSY MS_E_busy
#define MS_E_CHILD_ENTRY_SPECIFIED MS_E_child_entry_specified
#define MS_E_COMMUNICATIONS_PROBLEM MS_E_communications_problem
#define MS_E_CONTENT_LENGTH_PROBLEM MS_E_content_length_problem
#define MS_E_CONTENT_TYPE_PROBLEM MS_E_content_type_problem
#define MS_E_DEFER_DELIV_CANCEL_REJECT MS_E_defer_deliv_cancel_reject
#define MS_E_DELETE_RESTRICTION_PROBLEM MS_E_delETE_rESTRICTION_PROBLEM
#define MS_E_EIT_PROBLEM MS_E_eit_problem
#define MS_E_ELMT_SERV_NOT_SUBSCRIBED MS_E_elmt_serv_not_subscribed
#define MS_E_FEATURE_NOT_NEGOTIATED MS_E_feature_not_negotiated
#define MS_E_FEATURE_UNAVAILABLE MS_E_feature_unavailable
#define MS_E_INAPPROPRIATE_FOR_OPERATN MS_E_inappropriate_for_operatn
#define MS_E_INAPPROPRIATE_MATCHING MS_E_inappropriate_matching
#define MS_E_INCONSISTENT_REQUEST MS_E_inconsistent_request
#define MS_E_INVALID_ATTRIBUTE_VALUE MS_E_invalid_attribute_value
#define MS_E_INVALID_FEATURE MS_E_invalid_FEATURE
#define MS_E_INVALID_PARAMETERS MS_E_invalid_parameters
#define MS_E_MESSAGE_SUBMIT_ID_INVALID MS_E_message_submiT_id_invalid
#define MS_E_MISCELLANEOUS MS_E_miscellaneous
#define MS_E_NO_SUCH_CLASS MS_E_no_such_class
#define MS_E_NO_SUCH_ENTRY MS_E_no_such_entry
#define MS_E_ORIGINATOR_INVALID MS_E_originator_invalid
#define MS_E_OUT_OF_MEMORY MS_E_out_of_memory
#define MS_E_RECIPIENT_IMPROPERLY_SPECIFIED MS_E_recipient_improperly_specified
#define MS_E_REGISTER_REJECTED MS_E_register_rejected
#define MS_E_REMOTE_BIND_ERROR MS_E_remote_bind_error
#define MS_E_REVERSED MS_E_reversed
#define MS_E_SECURITY MS_E_security
#define MS_E_SUBMISSION_CTRL_VIOLATED MS_E_submission_ctrl_violated
#define MS_E_TOO_MANY_OPERATIONS MS_E_too_many_operations
#define MS_E_TOO_MANY_SESSIONS MS_E_too_many_sessions
#define MS_E_UNABLE_ESTABLISH_ASSOCIATN MS_E_unable_establish_associatn
#define MS_E_UNACCEPTABLE_SECURE_CONTXT MS_E_unacceptable_securE_contxt
#define MS_E_UNAVAILABLE MS_E_unavailable
#define MS_E_UNAVAILABLE_ACTION_TYPE MS_E_unavailable_action_type
#define MS_E_UNAVAILABLE_ATTRIBUTE_TYPE MS_E_unavailable_attribute_type
#define MS_E_UNSUPPORTED_CRITICAL_FUNC MS_E_unsupported_critical_func
#define MS_E_UNWILLING_TO_PERFORM MS_E_unwilling_to_perfoRM
#endif


Change number : XMS-1.2

Title

Align XMS with IEEE 1224 Standard

Qualifier

Minor Technical

Rationale

The statement in XMS (last bullet on p. 10) that a constraint on attributes can restrict the length of strings <in octets> conflicts with the XOM Issue 2 definition for Value Length. XOM Issue 2 (C315, section 4.2.18) states:
A data value of this type is the number of bits in a bit string, octets in an octet string, or characters in a character string,

In the X/Open X.400 (C316) and XDS (C317) Issue 2 CAE specifications, this constraint is expressed in terms of the number of elements in a string, rather than the number of octets.

In addition, the XOM Issue 2 API (C315) Appendix A: "Differences from IEEE Standard" section A.2 highlights this item and states:

X/Open believes that the definition in IEEE 1224-1993 is inconsistent with other definitions in IEEE 1224-1993, and is wrong.

The IEEE 1224-1993 Standard incorrectly introduced the "number of octets" definition. This is the subject of an IEEE interpretations request, and a published IEEE interpretation (reference IRQ# IEEE1224-1993/1, copy in XoTGnet 4687) states that "number of elements" is right and "number of octets" is wrong.

This CR proposes to replace the statement in XMS with text derived from that which appears in the X/Open X.400 and XDS Issue 2 specifications on this item.

Change

Replace the statement in XMS (last bullet in section 1.6.5 on page 10):

- restrict the length of strings (in octets), up to a limit known as the "value length constraint".

with

- restrict the length of strings, up to a limit known as the "value length constraint".

Note:

Any constraints on the length of a string are expressed in terms of number of bits in a bit string, octets in an octet string, or characters in a character string. These constraints are specified in the appropriate class definitions.

The number of octets used to represent a string with multibyte characters (for example, T.61 Teletext) may exceed the number of characters expressed in the value length constraint. Therefore the length field of such a string (which gives the number of octets by which it is represented) may exceed the value length constraint.


If you can't find the information you need, please contact X/Open at any of its offices.


Copyright X/Open Company Limited, © 1995