#include <csa/csa.h> CSA_return_code stat; CSA_session_handle cal; CSA_attribute attrs[9]; CSA_attribute_value attr_val[9]; CSA_reminder audio; CSA_reminder mail; CSA_entry_handle new_entry; int i; i = 0; /* 開始日の属性。この属性にはデフォルトがないため、必ず指定してください。 * CSA_date_time 値は、ISO 8601 規格にある * UTC ベースの日付と時間を指定します。 */ attrs[i].name = CSA_ENTRY_ATTR_START_DATE; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_DATE_TIME; attr_val[i].item.date_time_value = iso8601time(time(NULL)); i++; /* 終了日の属性。 * 指定しないと、エントリは終了日の属性を持ちません。 */ attrs[i].name = CSA_ENTRY_ATTR_END_DATE; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_DATE_TIME; attr_val[i].item.date_time_value = iso8601time(time(NULL) + 3600); i++; /* 分類属性。 * 指定しないと、デフォルト値は CSA_CLASS_PUBLIC になります。 */ attrs[i].name = CSA_ENTRY_ATTR_CLASSIFICATION; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_UINT32; attr_val[i].item.sint32_value = CSA_CLASS_CONFIDENTIAL; i++; /* タイプ属性。 * この属性にはデフォルトがないため、必ず指定してください。 */ attrs[i].name = CSA_ENTRY_ATTR_TYPE; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_UINT32; attr_val[i].item.sint32_value = CSA_TYPE_EVENT; i++; /* サブタイプ属性。 * 指定しないと、デフォルト値は CSA_SUBTYPE_APPOINTMENT になります。 */ attrs[i].name = CSA_ENTRY_ATTR_SUBTYPE; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_STRING; attr_val[i].item.string_value = CSA_SUBTYPE_APPOINTMENT; i++; /* サマリ属性 */ attrs[i].name = CSA_ENTRY_ATTR_SUMMARY; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_STRING; attr_val[i].item.string_value = argv6; attrs[i].attribute_extensions = NULL; i++; /* 反復規則属性。 * 指定しないと、エントリは 1 回だけのエントリになります。 * 反復規則 D1 #3 は、エントリが毎日 * 3 日間繰り返されるよう指定します。 */ attrs[i].name = CSA_ENTRY_ATTR_RECURRENCE_RULE; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_STRING; attr_val[i].item.string_value = argv7; i++; /* オーディオ通知属性。 * 通知プログラムのリード・タイムは、ISO 8601 規格にある * CSA_time_duration の値で指定します。 * たとえば、5 分間のリード・タイムは、文字列 +PT300S と表します。 * マイナス 5 分間のリード・タイムは、-PT300S と表します。 */ attrs[i].name = CSA_ENTRY_ATTR_AUDIO_REMINDER; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_REMINDER; attr_val[i].item.reminder_value = &audio; memset((void *)&audio, NULL, sizeof(audio)); audio.lead_time = “+PT300S”; i++; /* メール通知属性。 * 電子メール・アドレスは、reminder_data フィールドに指定します。 * この通知プログラムのリード・タイムは 1 日。 */ attrs[i].name = CSA_ENTRY_ATTR_MAIL_REMINDER; attrs[i].value = &attr_val[i]; attrs[i].attribute_extensions = NULL; attr_val[i].type = CSA_VALUE_REMINDER; attr_val[i].item.reminder_value = &mail; memset((void *)&mail, NULL, sizeof(mail)); mail.lead_time = “+PT86400S”; mail.reminder_data.data = “someuser@somehost”; mail.reminder_data.size = strlen(mail.reminder_data.data); i++; /* 指定した属性値でエントリを追加します */ stat = csa_add_entry(cal, i, attrs, &newentry, NULL); if (stat == CSA_SUCCESS) csa_free((CSA_buffer)newentry); |