"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/calendar/libecal/e-cal-util.h" between
evolution-data-server-3.32.4.tar.xz and evolution-data-server-3.34.0.tar.xz

About: Evolution-Data-Server manages access to the calendar, tasks and addressbook information available for Evolution and other applications.

e-cal-util.h  (evolution-data-server-3.32.4.tar.xz):e-cal-util.h  (evolution-data-server-3.34.0.tar.xz)
skipping to change at line 27 skipping to change at line 27
* Authors: Federico Mena-Quintero <federico@ximian.com> * Authors: Federico Mena-Quintero <federico@ximian.com>
*/ */
#if !defined (__LIBECAL_H_INSIDE__) && !defined (LIBECAL_COMPILATION) #if !defined (__LIBECAL_H_INSIDE__) && !defined (LIBECAL_COMPILATION)
#error "Only <libecal/libecal.h> should be included directly." #error "Only <libecal/libecal.h> should be included directly."
#endif #endif
#ifndef E_CAL_UTIL_H #ifndef E_CAL_UTIL_H
#define E_CAL_UTIL_H #define E_CAL_UTIL_H
#include <libical/ical.h> #include <libical-glib/libical-glib.h>
#include <time.h> #include <time.h>
#include <libedataserver/libedataserver.h>
#include <libecal/e-cal-component.h> #include <libecal/e-cal-component.h>
#include <libecal/e-cal-recur.h> #include <libecal/e-cal-recur.h>
#include <libecal/e-cal-types.h> #include <libecal/e-cal-enums.h>
G_BEGIN_DECLS G_BEGIN_DECLS
struct _ECalClient;
/**
* CalObjInstance:
* @uid: UID of the object
* @start: Start time of instance
* @end: End time of instance
*
* Instance of a calendar object. This can be an actual occurrence, a
* recurrence, or an alarm trigger of a `real' calendar object.
**/
typedef struct {
gchar *uid; /* UID of the object */
time_t start; /* Start time of instance */
time_t end; /* End time of instance */
} CalObjInstance;
void cal_obj_instance_list_free (GList *list);
void cal_obj_uid_list_free (GList *list);
icalcomponent * e_cal_util_new_top_level (void);
icalcomponent * e_cal_util_new_component (icalcomponent_kind kind)
;
icalcomponent * e_cal_util_parse_ics_string (const gchar *string);
icalcomponent * e_cal_util_parse_ics_file (const gchar *filename);
ECalComponentAlarms *
e_cal_util_generate_alarms_for_comp
(ECalComponent *comp,
time_t start,
time_t end,
ECalComponentAlarmAction *omit,
ECalRecurResolveTimezoneFn resol
ve_tzid,
gpointer user_data,
icaltimezone *default_timezone);
gint e_cal_util_generate_alarms_for_list
(GList *comps,
time_t start,
time_t end,
ECalComponentAlarmAction *omit,
GSList **comp_alarms,
ECalRecurResolveTimezoneFn resol
ve_tzid,
gpointer user_data,
icaltimezone *default_timezone);
const gchar * e_cal_util_priority_to_string (gint priority);
gint e_cal_util_priority_from_string (const gchar *string);
gchar * e_cal_util_seconds_to_string (gint64 seconds);
void e_cal_util_add_timezones_from_component
(icalcomponent *vcal_comp,
icalcomponent *icalcomp);
gboolean e_cal_util_component_is_instance
(icalcomponent *icalcomp);
gboolean e_cal_util_component_has_alarms (icalcomponent *icalcomp);
gboolean e_cal_util_component_has_organizer
(icalcomponent *icalcomp);
gboolean e_cal_util_component_has_recurrences
(icalcomponent *icalcomp);
gboolean e_cal_util_component_has_rdates (icalcomponent *icalcomp);
gboolean e_cal_util_component_has_rrules (icalcomponent *icalcomp);
gboolean e_cal_util_component_has_attendee
(icalcomponent *icalcomp);
gboolean e_cal_util_event_dates_match (icalcomponent *icalcomp1,
icalcomponent *icalcomp2);
/* The static capabilities to be supported by backends */ /* The static capabilities to be supported by backends */
#define CAL_STATIC_CAPABILITY_NO_ALARM_REPEAT "no-alarm-repeat" #define E_CAL_STATIC_CAPABILITY_NO_ALARM_REPEAT "no-alarm-repeat"
#define CAL_STATIC_CAPABILITY_NO_AUDIO_ALARMS "no-audio-alarms" #define E_CAL_STATIC_CAPABILITY_NO_AUDIO_ALARMS "no-audio-alarms"
#define CAL_STATIC_CAPABILITY_NO_DISPLAY_ALARMS "no-display-alarm #define E_CAL_STATIC_CAPABILITY_NO_DISPLAY_ALARMS "no-display-alarms"
s" #define E_CAL_STATIC_CAPABILITY_NO_EMAIL_ALARMS "no-email-alarms"
#define CAL_STATIC_CAPABILITY_NO_EMAIL_ALARMS "no-email-alarms" #define E_CAL_STATIC_CAPABILITY_NO_PROCEDURE_ALARMS "no-procedure-alarms"
#define CAL_STATIC_CAPABILITY_NO_PROCEDURE_ALARMS "no-procedure-alarms" #define E_CAL_STATIC_CAPABILITY_NO_TASK_ASSIGNMENT "no-task-assignment"
#define CAL_STATIC_CAPABILITY_NO_TASK_ASSIGNMENT "no-task-assignment" #define E_CAL_STATIC_CAPABILITY_NO_THISANDFUTURE "no-thisandfuture"
#define CAL_STATIC_CAPABILITY_NO_THISANDFUTURE "no-thisandfuture" #define E_CAL_STATIC_CAPABILITY_NO_THISANDPRIOR "no-thisandprior"
#define CAL_STATIC_CAPABILITY_NO_THISANDPRIOR "no-thisandprior" #define E_CAL_STATIC_CAPABILITY_NO_TRANSPARENCY "no-transparency"
#define CAL_STATIC_CAPABILITY_NO_TRANSPARENCY "no-transparency"
/** /**
* CAL_STATIC_CAPABILITY_MEMO_START_DATE: * E_CAL_STATIC_CAPABILITY_MEMO_START_DATE:
* *
* Flag indicating that the backend does not support memo's start date * Flag indicating that the backend does not support memo's start date
* *
* Since: 3.12 * Since: 3.12
*/ */
#define CAL_STATIC_CAPABILITY_NO_MEMO_START_DATE "no-memo-start-date" #define E_CAL_STATIC_CAPABILITY_NO_MEMO_START_DATE "no-memo-start-date"
/** /**
* CAL_STATIC_CAPABILITY_ALARM_DESCRIPTION: * E_CAL_STATIC_CAPABILITY_ALARM_DESCRIPTION:
* *
* Flag indicating that the backend supports alarm description * Flag indicating that the backend supports alarm description
* *
* Since: 3.8 * Since: 3.8
*/ */
#define CAL_STATIC_CAPABILITY_ALARM_DESCRIPTION "alarm-descriptio n" #define E_CAL_STATIC_CAPABILITY_ALARM_DESCRIPTION "alarm-description"
/** /**
* CAL_STATIC_CAPABILITY_NO_ALARM_AFTER_START: * E_CAL_STATIC_CAPABILITY_NO_ALARM_AFTER_START:
* *
* Flag indicating that the backend does not support alarm after start the event * Flag indicating that the backend does not support alarm after start the event
* *
* Since: 3.8 * Since: 3.8
*/ */
#define CAL_STATIC_CAPABILITY_NO_ALARM_AFTER_START "no-alarm-after-start" #define E_CAL_STATIC_CAPABILITY_NO_ALARM_AFTER_START "no-alarm-after-start"
/** /**
* CAL_STATIC_CAPABILITY_BULK_ADDS: * E_CAL_STATIC_CAPABILITY_BULK_ADDS:
* *
* Flag indicating that the backend supports bulk additions. * Flag indicating that the backend supports bulk additions.
* *
* Since: 3.6 * Since: 3.6
*/ */
#define CAL_STATIC_CAPABILITY_BULK_ADDS "bulk-adds" #define E_CAL_STATIC_CAPABILITY_BULK_ADDS "bulk-adds"
/** /**
* CAL_STATIC_CAPABILITY_BULK_MODIFIES: * E_CAL_STATIC_CAPABILITY_BULK_MODIFIES:
* *
* Flag indicating that the backend supports bulk modifications. * Flag indicating that the backend supports bulk modifications.
* *
* Since: 3.6 * Since: 3.6
*/ */
#define CAL_STATIC_CAPABILITY_BULK_MODIFIES "bulk-modifies" #define E_CAL_STATIC_CAPABILITY_BULK_MODIFIES "bulk-modifies"
/** /**
* CAL_STATIC_CAPABILITY_BULK_REMOVES: * E_CAL_STATIC_CAPABILITY_BULK_REMOVES:
* *
* Flag indicating that the backend supports bulk removals. * Flag indicating that the backend supports bulk removals.
* *
* Since: 3.6 * Since: 3.6
*/ */
#define CAL_STATIC_CAPABILITY_BULK_REMOVES "bulk-removes" #define E_CAL_STATIC_CAPABILITY_BULK_REMOVES "bulk-removes"
/** /**
* CAL_STATIC_CAPABILITY_REMOVE_ONLY_THIS: * E_CAL_STATIC_CAPABILITY_REMOVE_ONLY_THIS:
* *
* FIXME: Document me. * FIXME: Document me.
* *
* Since: 3.2 * Since: 3.2
**/ **/
#define CAL_STATIC_CAPABILITY_REMOVE_ONLY_THIS "remove-only-this" #define E_CAL_STATIC_CAPABILITY_REMOVE_ONLY_THIS "remove-only-this"
#define CAL_STATIC_CAPABILITY_ONE_ALARM_ONLY "one-alarm-only" #define E_CAL_STATIC_CAPABILITY_ONE_ALARM_ONLY "one-alarm-only"
#define CAL_STATIC_CAPABILITY_ORGANIZER_MUST_ATTEND "organizer-must-attend" #define E_CAL_STATIC_CAPABILITY_ORGANIZER_MUST_ATTEND "organizer-must-attend"
#define CAL_STATIC_CAPABILITY_ORGANIZER_NOT_EMAIL_ADDRESS "organizer-not-em #define E_CAL_STATIC_CAPABILITY_ORGANIZER_NOT_EMAIL_ADDRESS "organizer-not-em
ail-address" ail-address"
#define CAL_STATIC_CAPABILITY_REMOVE_ALARMS "remove-alarms" #define E_CAL_STATIC_CAPABILITY_REMOVE_ALARMS "remove-alarms"
/** /**
* CAL_STATIC_CAPABILITY_CREATE_MESSAGES: * E_CAL_STATIC_CAPABILITY_CREATE_MESSAGES:
* *
* Since: 2.26 * Since: 2.26
**/ **/
#define CAL_STATIC_CAPABILITY_CREATE_MESSAGES "create-messages" #define E_CAL_STATIC_CAPABILITY_CREATE_MESSAGES "create-messages"
#define CAL_STATIC_CAPABILITY_SAVE_SCHEDULES "save-schedules" #define E_CAL_STATIC_CAPABILITY_SAVE_SCHEDULES "save-schedules"
#define CAL_STATIC_CAPABILITY_NO_CONV_TO_ASSIGN_TASK "no-conv-to-assign-task" #define E_CAL_STATIC_CAPABILITY_NO_CONV_TO_ASSIGN_TASK "no-conv-to-assign-task"
#define CAL_STATIC_CAPABILITY_NO_CONV_TO_RECUR "no-conv-to-recur" #define E_CAL_STATIC_CAPABILITY_NO_CONV_TO_RECUR "no-conv-to-recur"
#define CAL_STATIC_CAPABILITY_NO_GEN_OPTIONS "no-general-options" #define E_CAL_STATIC_CAPABILITY_NO_GEN_OPTIONS "no-general-options"
#define CAL_STATIC_CAPABILITY_REQ_SEND_OPTIONS "require-send-options" #define E_CAL_STATIC_CAPABILITY_REQ_SEND_OPTIONS "require-send-options"
#define CAL_STATIC_CAPABILITY_RECURRENCES_NO_MASTER "recurrences-no-master-ob #define E_CAL_STATIC_CAPABILITY_RECURRENCES_NO_MASTER "recurrences-no-master-ob
ject" ject"
#define CAL_STATIC_CAPABILITY_ORGANIZER_MUST_ACCEPT "organizer-must-accept" #define E_CAL_STATIC_CAPABILITY_ORGANIZER_MUST_ACCEPT "organizer-must-accept"
#define CAL_STATIC_CAPABILITY_DELEGATE_SUPPORTED "delegate-support" #define E_CAL_STATIC_CAPABILITY_DELEGATE_SUPPORTED "delegate-support"
#define CAL_STATIC_CAPABILITY_NO_ORGANIZER "no-organizer" #define E_CAL_STATIC_CAPABILITY_NO_ORGANIZER "no-organizer"
#define CAL_STATIC_CAPABILITY_DELEGATE_TO_MANY "delegate-to-many" #define E_CAL_STATIC_CAPABILITY_DELEGATE_TO_MANY "delegate-to-many"
#define CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING "has-unaccepted-meeting" #define E_CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING "has-unaccepted-meeting"
/** /**
* CAL_STATIC_CAPABILITY_REFRESH_SUPPORTED: * E_CAL_STATIC_CAPABILITY_REFRESH_SUPPORTED:
* *
* Since: 2.30 * Since: 2.30
**/ **/
#define CAL_STATIC_CAPABILITY_REFRESH_SUPPORTED "refresh-supporte d" #define E_CAL_STATIC_CAPABILITY_REFRESH_SUPPORTED "refresh-supported"
/** /**
* CAL_STATIC_CAPABILITY_ALL_DAY_EVENT_AS_TIME: * E_CAL_STATIC_CAPABILITY_ALL_DAY_EVENT_AS_TIME:
* *
* Let the client know that it should store All Day event times as time * Let the client know that it should store All Day event times as time
* with a time zone, rather than as a date. * with a time zone, rather than as a date.
* *
* Since: 3.18 * Since: 3.18
**/ **/
#define CAL_STATIC_CAPABILITY_ALL_DAY_EVENT_AS_TIME "all-day-event-as-time" #define E_CAL_STATIC_CAPABILITY_ALL_DAY_EVENT_AS_TIME "all-day-event-as-time"
/** /**
* CAL_STATIC_CAPABILITY_TASK_DATE_ONLY: * E_CAL_STATIC_CAPABILITY_TASK_DATE_ONLY:
* *
* Let the client know that the Task Start date, Due date and Completed date * Let the client know that the Task Start date, Due date and Completed date
* can be entered only as dates. When the capability is not set, then these * can be entered only as dates. When the capability is not set, then these
* can be date and time. * can be date and time.
* *
* Since: 3.24 * Since: 3.24
**/ **/
#define CAL_STATIC_CAPABILITY_TASK_DATE_ONLY "task-date-only" #define E_CAL_STATIC_CAPABILITY_TASK_DATE_ONLY "task-date-only"
/** /**
* CAL_STATIC_CAPABILITY_TASK_CAN_RECUR: * E_CAL_STATIC_CAPABILITY_TASK_CAN_RECUR:
* *
* When the capability is set, the client can store and provide recurring * When the capability is set, the client can store and provide recurring
* tasks, otherwise it cannot. * tasks, otherwise it cannot.
* *
* Since: 3.30 * Since: 3.30
**/ **/
#define CAL_STATIC_CAPABILITY_TASK_CAN_RECUR "task-can-recur" #define E_CAL_STATIC_CAPABILITY_TASK_CAN_RECUR "task-can-recur"
/** /**
* CAL_STATIC_CAPABILITY_TASK_NO_ALARM: * E_CAL_STATIC_CAPABILITY_TASK_NO_ALARM:
* *
* When the capability is set, the client cannot store reminders * When the capability is set, the client cannot store reminders
* on tasks, otherwise it can. * on tasks, otherwise it can.
* *
* Since: 3.30 * Since: 3.30
**/ **/
#define CAL_STATIC_CAPABILITY_TASK_NO_ALARM "task-no-alarm" #define E_CAL_STATIC_CAPABILITY_TASK_NO_ALARM "task-no-alarm"
/** /**
* CAL_STATIC_CAPABILITY_COMPONENT_COLOR: * E_CAL_STATIC_CAPABILITY_COMPONENT_COLOR:
* *
* When the capability is set, the client supports storing color * When the capability is set, the client supports storing color
* for individual components. * for individual components.
* *
* Since: 3.30 * Since: 3.30
**/ **/
#define CAL_STATIC_CAPABILITY_COMPONENT_COLOR "component-color" #define E_CAL_STATIC_CAPABILITY_COMPONENT_COLOR "component-color"
/** /**
* CAL_STATIC_CAPABILITY_TASK_HANDLE_RECUR: * E_CAL_STATIC_CAPABILITY_TASK_HANDLE_RECUR:
* *
* When the capability is set, the backend handles task recurrence * When the capability is set, the backend handles task recurrence
* completion on its own. This does not imply CAL_STATIC_CAPABILITY_TASK_CAN_REC UR. * completion on its own. This does not imply E_CAL_STATIC_CAPABILITY_TASK_CAN_R ECUR.
* *
* Since: 3.32.1 * Since: 3.34
**/ **/
#define CAL_STATIC_CAPABILITY_TASK_HANDLE_RECUR "task-handle-recu #define E_CAL_STATIC_CAPABILITY_TASK_HANDLE_RECUR "task-handle-recur"
r"
struct _ECalClient;
/* Recurrent events. Management for instances */ ICalComponent * e_cal_util_new_top_level (void);
icalcomponent * e_cal_util_construct_instance (icalcomponent *icalcomp, ICalComponent * e_cal_util_new_component (ICalComponentKind kind);
struct icaltimetype rid); ICalTimezone * e_cal_util_copy_timezone (const ICalTimezone *zone);
void e_cal_util_remove_instances (icalcomponent *icalcomp,
struct icaltimetype rid, ICalComponent * e_cal_util_parse_ics_string (const gchar *string);
ICalComponent * e_cal_util_parse_ics_file (const gchar *filename);
ECalComponentAlarms *
e_cal_util_generate_alarms_for_comp
(ECalComponent *comp,
time_t start,
time_t end,
ECalComponentAlarmAction *omit,
ECalRecurResolveTimezoneCb resol
ve_tzid,
gpointer user_data,
ICalTimezone *default_timezone);
gint e_cal_util_generate_alarms_for_list
(GList *comps, /* ECalComponent *
*/
time_t start,
time_t end,
ECalComponentAlarmAction *omit,
GSList **comp_alarms,
ECalRecurResolveTimezoneCb resol
ve_tzid,
gpointer user_data,
ICalTimezone *default_timezone);
const gchar * e_cal_util_priority_to_string (gint priority);
gint e_cal_util_priority_from_string (const gchar *string);
gchar * e_cal_util_seconds_to_string (gint64 seconds);
void e_cal_util_add_timezones_from_component
(ICalComponent *vcal_comp,
ICalComponent *icalcomp);
gboolean e_cal_util_property_has_parameter
(ICalProperty *prop,
ICalParameterKind param_kind);
gboolean e_cal_util_component_has_property
(ICalComponent *icalcomp,
ICalPropertyKind prop_kind);
gboolean e_cal_util_component_is_instance
(ICalComponent *icalcomp);
gboolean e_cal_util_component_has_alarms (ICalComponent *icalcomp);
gboolean e_cal_util_component_has_organizer
(ICalComponent *icalcomp);
gboolean e_cal_util_component_has_recurrences
(ICalComponent *icalcomp);
gboolean e_cal_util_component_has_rdates (ICalComponent *icalcomp);
gboolean e_cal_util_component_has_rrules (ICalComponent *icalcomp);
gboolean e_cal_util_component_has_attendee
(ICalComponent *icalcomp);
gchar * e_cal_util_component_get_recurid_as_string
(ICalComponent *icalcomp);
ICalComponent * e_cal_util_construct_instance (ICalComponent *icalcomp,
const ICalTime *rid);
void e_cal_util_remove_instances (ICalComponent *icalcomp,
const ICalTime *rid,
ECalObjModType mod); ECalObjModType mod);
icalcomponent * e_cal_util_split_at_instance (icalcomponent *icalcomp, ICalComponent * e_cal_util_split_at_instance (ICalComponent *icalcomp,
struct icaltimetype rid, const ICalTime *rid,
struct icaltimetype master_dtsta const ICalTime *master_dtstart);
rt);
gboolean e_cal_util_is_first_instance (ECalComponent *comp, gboolean e_cal_util_is_first_instance (ECalComponent *comp,
struct icaltimetype rid, const ICalTime *rid,
ECalRecurResolveTimezoneFn tz_cb ECalRecurResolveTimezoneCb tz_cb
, ,
gpointer tz_cb_data); gpointer tz_cb_data);
gchar * e_cal_util_get_system_timezone_location (void); gchar * e_cal_util_get_system_timezone_location (void);
icaltimezone * e_cal_util_get_system_timezone (void); ICalTimezone * e_cal_util_get_system_timezone (void);
void e_cal_util_get_component_occur_times void e_cal_util_get_component_occur_times
(ECalComponent *comp, (ECalComponent *comp,
time_t * start, time_t *out_start,
time_t * end, time_t *out_end,
ECalRecurResolveTimezoneFn tz_cb ECalRecurResolveTimezoneCb tz_cb
, ,
gpointer tz_cb_data, gpointer tz_cb_data,
const icaltimezone *default_time const ICalTimezone *default_time
zone, zone,
icalcomponent_kind kind); ICalComponentKind kind);
icalproperty * e_cal_util_find_x_property (icalcomponent *icalcomp, gboolean e_cal_util_component_has_x_property
(ICalComponent *icalcomp,
const gchar *x_name); const gchar *x_name);
gchar * e_cal_util_dup_x_property (icalcomponent *icalcomp, ICalProperty * e_cal_util_component_find_x_property
(ICalComponent *icalcomp,
const gchar *x_name); const gchar *x_name);
const gchar * e_cal_util_get_x_property (icalcomponent *icalcomp, gchar * e_cal_util_component_dup_x_property
(ICalComponent *icalcomp,
const gchar *x_name); const gchar *x_name);
void e_cal_util_set_x_property (icalcomponent *icalcomp, void e_cal_util_component_set_x_property
(ICalComponent *icalcomp,
const gchar *x_name, const gchar *x_name,
const gchar *value); const gchar *value);
gboolean e_cal_util_remove_x_property (icalcomponent *icalcomp, gboolean e_cal_util_component_remove_x_property
(ICalComponent *icalcomp,
const gchar *x_name); const gchar *x_name);
guint e_cal_util_remove_property_by_kind guint e_cal_util_component_remove_property_by_kind
(icalcomponent *icalcomp, (ICalComponent *icalcomp,
icalproperty_kind kind, ICalPropertyKind kind,
gboolean all); gboolean all);
gboolean e_cal_util_init_recur_task_sync (icalcomponent *vtodo, gboolean e_cal_util_init_recur_task_sync (ICalComponent *vtodo,
struct _ECalClient *cal_client, struct _ECalClient *cal_client,
GCancellable *cancellable, GCancellable *cancellable,
GError **error); GError **error);
gboolean e_cal_util_mark_task_complete_sync gboolean e_cal_util_mark_task_complete_sync
(icalcomponent *vtodo, (ICalComponent *vtodo,
time_t completed_time, time_t completed_time,
struct _ECalClient *cal_client, struct _ECalClient *cal_client,
GCancellable *cancellable, GCancellable *cancellable,
GError **error); GError **error);
EConflictResolution
#ifndef EDS_DISABLE_DEPRECATED e_cal_util_operation_flags_to_conflict_resolution
/* Used for mode stuff */ (guint32 flags); /* bit-or of ECa
typedef enum { lOperationFlags */
CAL_MODE_INVALID = -1, guint32 e_cal_util_conflict_resolution_to_operation_flags /* bit-
CAL_MODE_LOCAL = 1 << 0, or of ECalOperationFlags */
CAL_MODE_REMOTE = 1 << 1, (EConflictResolution conflict_res
CAL_MODE_ANY = 0x07 olution);
} CalMode;
#define cal_mode_to_corba(mode) \
(mode == CAL_MODE_LOCAL ? Local : \
mode == CAL_MODE_REMOTE ? Remote : \
AnyMode)
#endif /* EDS_DISABLE_DEPRECATED */
G_END_DECLS G_END_DECLS
#endif /* E_CAL_UTIL_H */ #endif /* E_CAL_UTIL_H */
 End of changes. 54 change blocks. 
179 lines changed or deleted 161 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)