projects
/
citadel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
029bea4
)
* use the new nexttoken to deserialize the wholist info.
author
Wilfried Göesgens
<willi@citadel.org>
Sun, 15 Feb 2009 22:01:03 +0000
(22:01 +0000)
committer
Wilfried Göesgens
<willi@citadel.org>
Sun, 15 Feb 2009 22:01:03 +0000
(22:01 +0000)
webcit/who.c
patch
|
blob
|
history
diff --git
a/webcit/who.c
b/webcit/who.c
index 9e1e3c90e797f39573186947d651f83e3ca7109a..6be0e6c67431e35b9e87da8fd9accd19d53070a3 100644
(file)
--- a/
webcit/who.c
+++ b/
webcit/who.c
@@
-42,40
+42,45
@@
int CompareUserStruct(const void *VUser1, const void *VUser2)
int GetWholistSection(HashList *List, time_t now)
{
int GetWholistSection(HashList *List, time_t now)
{
- StrBuf *Buf
, *XBuf
;
+ StrBuf *Buf;
wcsession *WCC = WC;
UserStateStruct *User, *OldUser;
void *VOldUser;
size_t BufLen;
char buf[SIZ];
wcsession *WCC = WC;
UserStateStruct *User, *OldUser;
void *VOldUser;
size_t BufLen;
char buf[SIZ];
+ const char *Pos;
serv_puts("RWHO");
serv_getln(buf, sizeof buf);
if (buf[0] == '1') {
Buf = NewStrBuf();
serv_puts("RWHO");
serv_getln(buf, sizeof buf);
if (buf[0] == '1') {
Buf = NewStrBuf();
- XBuf = NewStrBuf();
while (BufLen = StrBuf_ServGetln(Buf), strcmp(ChrPtr(Buf), "000")) {
if (BufLen <= 0)
continue;
while (BufLen = StrBuf_ServGetln(Buf), strcmp(ChrPtr(Buf), "000")) {
if (BufLen <= 0)
continue;
+ Pos = NULL;
User = (UserStateStruct*) malloc(sizeof(UserStateStruct));
User = (UserStateStruct*) malloc(sizeof(UserStateStruct));
- User->Session = StrBufExtract
_int(Buf, 0
, '|');
+ User->Session = StrBufExtract
Next_int(Buf, &Pos
, '|');
- StrBufExtract_token(XBuf, Buf, 1, '|');
- User->UserName = NewStrBufDup(XBuf);
+ User->UserName = NewStrBufPlain(NULL, BufLen);
+ StrBufExtract_NextToken(User->UserName, Buf, &Pos, '|');
+
+ User->Room = NewStrBufPlain(NULL, BufLen);
+ StrBufExtract_NextToken(User->Room, Buf, &Pos, '|');
+
+ User->Host = NewStrBufPlain(NULL, BufLen);
+ StrBufExtract_NextToken(User->Host, Buf, &Pos, '|');
- StrBufExtract_token(XBuf, Buf, 2, '|');
- User->Room = NewStrBufDup(XBuf);
+ StrBufSkip_NTokenS(Buf, &Pos, '|', 1);
-
StrBufExtract_token(XBuf, Buf, 3
, '|');
-
User->Host = NewStrBufDup(XBuf
);
+
User->LastActive = StrBufExtractNext_long(Buf, &Pos
, '|');
+
StrBufSkip_NTokenS(Buf, &Pos, '|', 3
);
-
StrBufExtract_token(XBuf, Buf, 9, '|'
);
-
User->RealRoom = NewStrBufDup(XBuf
);
+
User->RealRoom = NewStrBufPlain(NULL, BufLen
);
+
StrBufExtract_NextToken(User->RealRoom, Buf, &Pos, '|'
);
-
StrBufExtract_token(XBuf, Buf, 10, '|'
);
-
User->RealHost = NewStrBufDup(XBuf
);
+
User->RealHost = NewStrBufPlain(NULL, BufLen
);
+
StrBufExtract_NextToken(User->RealHost, Buf, &Pos, '|'
);
- User->LastActive = StrBufExtract_long(Buf, 5, '|');
User->Idle = (now - User->LastActive) > 900L;
User->IdleSince = (now - User->LastActive) / 60;
User->SessionCount = 1;
User->Idle = (now - User->LastActive) > 900L;
User->IdleSince = (now - User->LastActive) / 60;
User->SessionCount = 1;
@@
-103,7
+108,6
@@
int GetWholistSection(HashList *List, time_t now)
}
SortByPayload(List, CompareUserStruct);
}
SortByPayload(List, CompareUserStruct);
- FreeStrBuf(&XBuf);
FreeStrBuf(&Buf);
return 1;
}
FreeStrBuf(&Buf);
return 1;
}