annotate mcabber/src/roster.h @ 830:80434fde7cfa

Display presence notification timestamps when they exist These timestamps were used in the roster, but not in the buffer window message nor in the history logfile. Reported by "ze".
author Mikael Berthe <mikael@lilotux.net>
date Wed, 03 May 2006 11:28:41 +0200
parents c2d7d9dd4193
children a9161d2dc414
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
1 #ifndef __ROSTER_H__
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
2 #define __ROSTER_H__ 1
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
3
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
4 #include <glib.h>
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 610
diff changeset
5 #include <time.h>
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
6
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
7 enum imstatus {
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
8 offline,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
9 available,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
10 invisible,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
11 freeforchat,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
12 dontdisturb,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
13 notavail,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
14 away,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
15 imstatus_size
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
16 };
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
17
438
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
18 enum imrole {
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
19 role_none,
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
20 role_moderator,
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
21 role_participant,
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
22 role_visitor,
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
23 imrole_size
438
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
24 };
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
25
584
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
26 extern char *strrole[]; // Should match enum above
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
27
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
28 enum imaffiliation {
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
29 affil_none,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
30 affil_owner,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
31 affil_admin,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
32 affil_member,
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
33 affil_outcast,
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
34 imaffiliation_size
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
35 };
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
36
584
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
37 extern char *straffil[]; // Should match enum above
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
38
438
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
39 enum subscr {
603
9516db839e08 Store subscription data
Mikael Berthe <mikael@lilotux.net>
parents: 585
diff changeset
40 sub_none = 0,
9516db839e08 Store subscription data
Mikael Berthe <mikael@lilotux.net>
parents: 585
diff changeset
41 sub_pending = 1,
9516db839e08 Store subscription data
Mikael Berthe <mikael@lilotux.net>
parents: 585
diff changeset
42 sub_to = 1 << 2,
9516db839e08 Store subscription data
Mikael Berthe <mikael@lilotux.net>
parents: 585
diff changeset
43 sub_from = 1 << 3,
9516db839e08 Store subscription data
Mikael Berthe <mikael@lilotux.net>
parents: 585
diff changeset
44 sub_both = sub_to|sub_from,
9516db839e08 Store subscription data
Mikael Berthe <mikael@lilotux.net>
parents: 585
diff changeset
45 sub_remove = 1 << 4
438
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
46 };
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
47
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
48 enum findwhat {
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
49 jidsearch,
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
50 namesearch
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
51 };
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
52
584
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
53 struct role_affil {
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
54 enum { type_role, type_affil } type;
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
55 union {
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
56 enum imrole role;
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
57 enum imaffiliation affil;
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
58 } val;
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
59 };
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
60
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
61 // Roster_type is a set of flags, so values should be 2^n
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
62 #define ROSTER_TYPE_USER 1
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
63 #define ROSTER_TYPE_GROUP 2
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
64 #define ROSTER_TYPE_AGENT 4
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
65 #define ROSTER_TYPE_ROOM 8
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
66
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
67 // Flags:
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
68 #define ROSTER_FLAG_MSG 1 // Message not read
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
69 #define ROSTER_FLAG_HIDE 2 // Group hidden (or buddy window closed)
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
70 #define ROSTER_FLAG_LOCK 4 // Node should not be removed from buddylist
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
71 // ROSTER_FLAG_LOCAL 8 // Buddy not on server's roster (??)
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
73 extern GList *buddylist;
78
d001d8fb876d [/trunk] Changeset 92 by mikael
mikael
parents: 72
diff changeset
74 extern GList *current_buddy;
330
a9013124ede6 Add "/roster alternate"
Mikael Berthe <mikael@lilotux.net>
parents: 318
diff changeset
75 extern GList *alternate_buddy;
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
76
78
d001d8fb876d [/trunk] Changeset 92 by mikael
mikael
parents: 72
diff changeset
77 // Macros...
d001d8fb876d [/trunk] Changeset 92 by mikael
mikael
parents: 72
diff changeset
78
79
ff8046b6de02 [/trunk] Changeset 93 by mikael
mikael
parents: 78
diff changeset
79 #define BUDDATA(glist_node) ((glist_node)->data)
ff8046b6de02 [/trunk] Changeset 93 by mikael
mikael
parents: 78
diff changeset
80 #define CURRENT_JID buddy_getjid(BUDDATA(current_buddy))
78
d001d8fb876d [/trunk] Changeset 92 by mikael
mikael
parents: 72
diff changeset
81
d001d8fb876d [/trunk] Changeset 92 by mikael
mikael
parents: 72
diff changeset
82 // Prototypes...
d001d8fb876d [/trunk] Changeset 92 by mikael
mikael
parents: 72
diff changeset
83 GSList *roster_add_group(const char *name);
d001d8fb876d [/trunk] Changeset 92 by mikael
mikael
parents: 72
diff changeset
84 GSList *roster_add_user(const char *jid, const char *name, const char *group,
603
9516db839e08 Store subscription data
Mikael Berthe <mikael@lilotux.net>
parents: 585
diff changeset
85 guint type, enum subscr esub);
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
86 GSList *roster_find(const char *jidname, enum findwhat type, guint roster_type);
78
d001d8fb876d [/trunk] Changeset 92 by mikael
mikael
parents: 72
diff changeset
87 void roster_del_user(const char *jid);
164
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 148
diff changeset
88 void roster_free(void);
438
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
89 void roster_setstatus(const char *jid, const char *resname, gchar prio,
468
644b8bf9ca4d Improve MUC presence messages handling
Mikael Berthe <mikael@lilotux.net>
parents: 447
diff changeset
90 enum imstatus bstat, const char *status_msg,
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 610
diff changeset
91 time_t timestamp,
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
92 enum imrole role, enum imaffiliation affil,
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
93 const char *realjid);
80
7fb661f19a77 [/trunk] Changeset 94 by mikael
mikael
parents: 79
diff changeset
94 void roster_setflags(const char *jid, guint flags, guint value);
148
c3624b2a7059 [/trunk] Changeset 160 by mikael
mikael
parents: 147
diff changeset
95 void roster_msg_setflag(const char *jid, guint value);
510
6c3cd3aa4a91 New 'buddy_format' option
Mikael Berthe <mikael@lilotux.net>
parents: 489
diff changeset
96 const char *roster_getname(const char *jid);
89
d39f15683c34 [/trunk] Changeset 103 by mikael
mikael
parents: 80
diff changeset
97 void roster_settype(const char *jid, guint type);
438
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
98 enum imstatus roster_getstatus(const char *jid, const char *resname);
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
99 const char *roster_getstatusmsg(const char *jid, const char *resname);
89
d39f15683c34 [/trunk] Changeset 103 by mikael
mikael
parents: 80
diff changeset
100 guint roster_gettype(const char *jid);
819
c2d7d9dd4193 New option 'block_unsubscribed'
Mikael Berthe <mikael@lilotux.net>
parents: 792
diff changeset
101 guint roster_getsubscription(const char *jid);
610
0e8247cf2bd1 Consider buddies as offline when they have cancelled our subscription
Mikael Berthe <mikael@lilotux.net>
parents: 603
diff changeset
102 void roster_unsubscribed(const char *jid);
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
103
166
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
104 void buddylist_build(void);
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
105 void buddy_hide_group(gpointer rosterdata, int hide);
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
106 void buddylist_set_hide_offline_buddies(int hide);
120
cfd3df636d5f [/trunk] Changeset 133 by mikael
mikael
parents: 119
diff changeset
107 inline int buddylist_get_hide_offline_buddies(void);
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
108 const char *buddy_getjid(gpointer rosterdata);
207
41fafa0ecfd8 [/trunk] Changeset 219 by mikael
mikael
parents: 166
diff changeset
109 void buddy_setname(gpointer rosterdata, char *newname);
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
110 const char *buddy_getname(gpointer rosterdata);
469
a926523d2392 Use UTF8 to handle resources and room nicknames
Mikael Berthe <mikael@lilotux.net>
parents: 468
diff changeset
111 void buddy_setnickname(gpointer rosterdata, const char *newname);
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
112 const char *buddy_getnickname(gpointer rosterdata);
644
68fb0c1dfb15 MUC: better nickname check when entering a room
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
113 void buddy_setinsideroom(gpointer rosterdata, guint8 inside);
68fb0c1dfb15 MUC: better nickname check when entering a room
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
114 guint8 buddy_getinsideroom(gpointer rosterdata);
548
265c50238a48 Add buddy_{get,set}topic()
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
115 void buddy_settopic(gpointer rosterdata, const char *newtopic);
265c50238a48 Add buddy_{get,set}topic()
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
116 const char *buddy_gettopic(gpointer rosterdata);
489
21ab22a60bcb Auto-convert a roster item to "room" type when receiving a groupchat message
Mikael Berthe <mikael@lilotux.net>
parents: 480
diff changeset
117 void buddy_settype(gpointer rosterdata, guint type);
166
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
118 guint buddy_gettype(gpointer rosterdata);
603
9516db839e08 Store subscription data
Mikael Berthe <mikael@lilotux.net>
parents: 585
diff changeset
119 guint buddy_getsubscription(gpointer rosterdata);
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 207
diff changeset
120 void buddy_setgroup(gpointer rosterdata, char *newgroupname);
207
41fafa0ecfd8 [/trunk] Changeset 219 by mikael
mikael
parents: 166
diff changeset
121 const char *buddy_getgroupname(gpointer rosterdata);
166
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
122 gpointer buddy_getgroup(gpointer rosterdata);
438
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
123 enum imstatus buddy_getstatus(gpointer rosterdata, const char *resname);
b44be19d6229 Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
124 const char *buddy_getstatusmsg(gpointer rosterdata, const char *resname);
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 610
diff changeset
125 time_t buddy_getstatustime(gpointer rosterdata, const char *resname);
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
126 gchar buddy_getresourceprio(gpointer rosterdata, const char *resname);
652
b243d3b3ff1b We do not need buddy_isresource() anymore
Mikael Berthe <mikael@lilotux.net>
parents: 644
diff changeset
127 //int buddy_isresource(gpointer rosterdata);
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
128 GSList *buddy_getresources(gpointer rosterdata);
792
89ad7b530b3c MUC: Fix completion for UTF-8 nicknames
Mikael Berthe <mikael@lilotux.net>
parents: 652
diff changeset
129 GSList *buddy_getresources_locale(gpointer rosterdata);
468
644b8bf9ca4d Improve MUC presence messages handling
Mikael Berthe <mikael@lilotux.net>
parents: 447
diff changeset
130 void buddy_resource_setname(gpointer rosterdata, const char *resname,
644b8bf9ca4d Improve MUC presence messages handling
Mikael Berthe <mikael@lilotux.net>
parents: 447
diff changeset
131 const char *newname);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
132 enum imrole buddy_getrole(gpointer rosterdata, const char *resname);
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
133 enum imaffiliation buddy_getaffil(gpointer rosterdata, const char *resname);
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 548
diff changeset
134 const char *buddy_getrjid(gpointer rosterdata, const char *resname);
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
135 void buddy_del_all_resources(gpointer rosterdata);
166
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
136 void buddy_setflags(gpointer rosterdata, guint flags, guint value);
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
137 guint buddy_getflags(gpointer rosterdata);
480
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 469
diff changeset
138 GList *buddy_search_jid(char *jid);
265
49e9e02dd6d0 Add "/roster search" command
mikael@frmp8452
parents: 236
diff changeset
139 GList *buddy_search(char *string);
532
2ac8d8e49e81 Send status changes to chatrooms
Mikael Berthe <mikael@lilotux.net>
parents: 510
diff changeset
140 void foreach_buddy(guint roster_type,
2ac8d8e49e81 Send status changes to chatrooms
Mikael Berthe <mikael@lilotux.net>
parents: 510
diff changeset
141 void (*pfunc)(gpointer rosterdata, void *param),
2ac8d8e49e81 Send status changes to chatrooms
Mikael Berthe <mikael@lilotux.net>
parents: 510
diff changeset
142 void *param);
236
72fd1273f2b7 [/trunk] Changeset 249 by mikael
mikael
parents: 225
diff changeset
143 gpointer unread_msg(gpointer rosterdata);
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
144
225
d5ae42cbe1fa [/trunk] Changeset 237 by mikael
mikael
parents: 221
diff changeset
145 GSList *compl_list(guint type);
d5ae42cbe1fa [/trunk] Changeset 237 by mikael
mikael
parents: 221
diff changeset
146
72
9b7f0d313e33 [/trunk] Changeset 86 by mikael
mikael
parents:
diff changeset
147 #endif /* __ROSTER_H__ */
576
8b3db0b555a1 Add Vim modelines
Mikael Berthe <mikael@lilotux.net>
parents: 572
diff changeset
148
580
fed6d1e4d7a9 Fix modelines
Mikael Berthe <mikael@lilotux.net>
parents: 576
diff changeset
149 /* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */