floorlist[a][0] = 0;
serv_puts("LFLR");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '1') {
strcpy(floorlist[0], "Main Floor");
return;
}
- while (serv_gets(buf), strcmp(buf, "000")) {
- extract(floorlist[extract_int(buf, 0)], buf, 1);
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ extract_token(floorlist[extract_int(buf, 0)], buf, 1, '|', sizeof floorlist[0]);
}
}
/* Ask the server for a room list */
serv_puts(variety);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '1') {
wprintf(" ");
return;
}
- while (serv_gets(buf), strcmp(buf, "000")) {
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
++num_rooms;
rp = malloc(sizeof(struct roomlisting));
- extract(rp->rlname, buf, 0);
+ extract_token(rp->rlname, buf, 0, '|', sizeof rp->rlname);
rp->rlflags = extract_int(buf, 1);
rp->rlfloor = extract_int(buf, 2);
rp->rlorder = extract_int(buf, 3);
char buf[SIZ];
serv_puts("RINF");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '1') {
fmout(NULL, "CENTER");
}
char buf[SIZ];
serv_puts("OIMG _roompic_");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
wprintf("<TD BGCOLOR=\"#444455\">");
wprintf("<IMG HEIGHT=64 SRC=\"/image&name=_roompic_&room=");
urlescputs(WC->wc_roomname);
wprintf("\"></TD>");
serv_puts("CLOS");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
}
}
if ( (WC->new_mail > WC->remember_new_mail) && (WC->new_mail>0) ) {
wprintf(
"<A HREF=\"/dotgoto?room=_MAIL_\">"
- "<IMG SRC=\"/static/mail.gif\" border=0 "
+ "<IMG SRC=\"/static/privatemess_32x.gif\" border=0 "
"ALT=\"You have new mail\">"
"<br /><SPAN CLASS=\"youhavemail\">"
"%d new mail</SPAN></A>", WC->new_mail);
*/
if (got == NULL) {
serv_printf("GOTO %s", WC->wc_roomname);
- serv_gets(fakegot);
+ serv_getln(fakegot, sizeof fakegot);
got = fakegot;
}
/* move to the new room */
serv_printf("GOTO %s", gname);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
serv_puts("GOTO _BASEROOM_");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
}
if (buf[0] != '2') {
return;
}
- extract(WC->wc_roomname, &buf[4], 0);
+ extract_token(WC->wc_roomname, &buf[4], 0, '|', sizeof WC->wc_roomname);
WC->room_flags = extract_int(&buf[4], 4);
/* highest_msg_read = extract_int(&buf[4],6);
maxmsgnum = extract_int(&buf[4],5);
if (WC->march == NULL) {
serv_puts("LKRN");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '1')
- while (serv_gets(buf), strcmp(buf, "000")) {
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
mptr = (struct march *) malloc(sizeof(struct march));
mptr->next = NULL;
- extract(mptr->march_name, buf, 0);
+ extract_token(mptr->march_name, buf, 0, '|', sizeof mptr->march_name);
mptr->march_floor = extract_int(buf, 2);
mptr->march_order = extract_int(buf, 3);
if (WC->march == NULL) {
/* set pointer */
serv_puts("SLRP HIGHEST");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
wprintf("<EM>%s</EM><br />\n", &buf[4]);
return;
return;
}
serv_printf("GOTO %s", WC->ugname);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
smart_goto(WC->wc_roomname);
return;
}
if (WC->uglsn >= 0L) {
serv_printf("SLRP %ld", WC->uglsn);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
}
strcpy(buf, WC->ugname);
strcpy(WC->ugname, "");
int flags, floor, order, view, flags2;
serv_puts("GETR");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') return(0);
- extract(name, &buf[4], 0);
- extract(password, &buf[4], 1);
- extract(dirname, &buf[4], 2);
+ extract_token(name, &buf[4], 0, '|', sizeof name);
+ extract_token(password, &buf[4], 1, '|', sizeof password);
+ extract_token(dirname, &buf[4], 2, '|', sizeof dirname);
flags = extract_int(&buf[4], 3);
floor = extract_int(&buf[4], 4);
order = extract_int(&buf[4], 5);
serv_printf("SETR %s|%s|%s|%d|0|%d|%d|%d|%d",
name, password, dirname, flags,
floor, order, view, flags2);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
}
return(newval);
load_floorlist();
serv_puts("GETR");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
display_main_menu();
return;
}
- extract(er_name, &buf[4], 0);
- extract(er_password, &buf[4], 1);
- extract(er_dirname, &buf[4], 2);
+ extract_token(er_name, &buf[4], 0, '|', sizeof er_name);
+ extract_token(er_password, &buf[4], 1, '|', sizeof er_password);
+ extract_token(er_dirname, &buf[4], 2, '|', sizeof er_dirname);
er_flags = extract_int(&buf[4], 3);
er_floor = extract_int(&buf[4], 4);
if (!strcmp(tab, "admin")) {
wprintf("<UL>"
- "<LI><A HREF=\"/confirm_delete_room\">\n"
+ "<LI><A HREF=\"/delete_room\" "
+ "onClick=\"return confirm('Are you sure you want to delete this room?');\">\n"
"Delete this room</A>\n"
"<LI><A HREF=\"/display_editroompic\">\n"
"Set or change the graphic for this room's banner</A>\n"
wprintf("<LI>Room aide: \n");
serv_puts("GETA");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
wprintf("<EM>%s</EM>\n", &buf[4]);
} else {
- extract(er_roomaide, &buf[4], 0);
+ extract_token(er_roomaide, &buf[4], 0, '|', sizeof er_roomaide);
wprintf("<INPUT TYPE=\"text\" NAME=\"er_roomaide\" VALUE=\"%s\" MAXLENGTH=\"25\">\n", er_roomaide);
}
/* Learn the current configuration */
serv_puts("CONF getsys|application/x-citadel-ignet-config");
- serv_gets(buf);
- if (buf[0]=='1') while (serv_gets(buf), strcmp(buf, "000")) {
- extract(node, buf, 0);
+ serv_getln(buf, sizeof buf);
+ if (buf[0]=='1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ extract_token(node, buf, 0, '|', sizeof node);
not_shared_with = realloc(not_shared_with,
strlen(not_shared_with) + 32);
strcat(not_shared_with, node);
}
serv_puts("GNET");
- serv_gets(buf);
- if (buf[0]=='1') while (serv_gets(buf), strcmp(buf, "000")) {
- extract(cmd, buf, 0);
- extract(node, buf, 1);
- extract(remote_room, buf, 2);
+ serv_getln(buf, sizeof buf);
+ if (buf[0]=='1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ extract_token(cmd, buf, 0, '|', sizeof cmd);
+ extract_token(node, buf, 1, '|', sizeof node);
+ extract_token(remote_room, buf, 2, '|', sizeof remote_room);
if (!strcasecmp(cmd, "ignet_push_share")) {
shared_with = realloc(shared_with,
strlen(shared_with) + 32);
}
for (i=0; i<num_tokens(shared_with, '\n'); ++i) {
- extract_token(buf, shared_with, i, '\n');
- extract_token(node, buf, 0, '|');
+ extract_token(buf, shared_with, i, '\n', sizeof buf);
+ extract_token(node, buf, 0, '|', sizeof node);
for (j=0; j<num_tokens(not_shared_with, '\n'); ++j) {
- extract_token(cmd, not_shared_with, j, '\n');
+ extract_token(cmd, not_shared_with, j, '\n', sizeof cmd);
if (!strcasecmp(node, cmd)) {
remove_token(not_shared_with, j, '\n');
}
);
for (i=0; i<num_tokens(shared_with, '\n'); ++i) {
- extract_token(buf, shared_with, i, '\n');
- extract_token(node, buf, 0, '|');
- extract_token(remote_room, buf, 1, '|');
+ extract_token(buf, shared_with, i, '\n', sizeof buf);
+ extract_token(node, buf, 0, '|', sizeof node);
+ extract_token(remote_room, buf, 1, '|', sizeof remote_room);
if (strlen(node) > 0) {
wprintf("<FORM METHOD=\"POST\" "
"ACTION=\"/netedit\">"
);
for (i=0; i<num_tokens(not_shared_with, '\n'); ++i) {
- extract_token(node, not_shared_with, i, '\n');
+ extract_token(node, not_shared_with, i, '\n', sizeof node);
if (strlen(node) > 0) {
wprintf("<FORM METHOD=\"POST\" "
"ACTION=\"/netedit\">"
"</i><br /><br />\n");
serv_puts("GNET");
- serv_gets(buf);
- if (buf[0]=='1') while (serv_gets(buf), strcmp(buf, "000")) {
- extract(cmd, buf, 0);
+ serv_getln(buf, sizeof buf);
+ if (buf[0]=='1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ extract_token(cmd, buf, 0, '|', sizeof cmd);
if (!strcasecmp(cmd, "listrecp")) {
- extract(recp, buf, 1);
+ extract_token(recp, buf, 1, '|', sizeof recp);
escputs(recp);
wprintf(" <A HREF=\"/netedit&cmd=remove&line="
"</i><br /><br />\n");
serv_puts("GNET");
- serv_gets(buf);
- if (buf[0]=='1') while (serv_gets(buf), strcmp(buf, "000")) {
- extract(cmd, buf, 0);
+ serv_getln(buf, sizeof buf);
+ if (buf[0]=='1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ extract_token(cmd, buf, 0, '|', sizeof cmd);
if (!strcasecmp(cmd, "digestrecp")) {
- extract(recp, buf, 1);
+ extract_token(recp, buf, 1, '|', sizeof recp);
escputs(recp);
wprintf(" <A HREF=\"/netedit&cmd=remove&line="
if (!strcmp(tab, "expire")) {
serv_puts("GPEX room");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
roompolicy = extract_int(&buf[4], 0);
roomvalue = extract_int(&buf[4], 1);
}
serv_puts("GPEX floor");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
floorpolicy = extract_int(&buf[4], 0);
floorvalue = extract_int(&buf[4], 1);
return;
}
serv_puts("GETR");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
display_editroom();
return;
}
- extract(er_name, &buf[4], 0);
- extract(er_password, &buf[4], 1);
- extract(er_dirname, &buf[4], 2);
+ extract_token(er_name, &buf[4], 0, '|', sizeof er_name);
+ extract_token(er_password, &buf[4], 1, '|', sizeof er_password);
+ extract_token(er_dirname, &buf[4], 2, '|', sizeof er_dirname);
er_flags = extract_int(&buf[4], 3);
strcpy(er_roomaide, bstr("er_roomaide"));
if (strlen(er_roomaide) == 0) {
serv_puts("GETA");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(er_roomaide, "");
} else {
- extract(er_roomaide, &buf[4], 0);
+ extract_token(er_roomaide, &buf[4], 0, '|', sizeof er_roomaide);
}
}
strcpy(buf, bstr("er_name"));
sprintf(buf, "SETR %s|%s|%s|%u|%d|%d",
er_name, er_password, er_dirname, er_flags, bump, er_floor);
serv_puts(buf);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
display_editroom();
if (strlen(er_roomaide) > 0) {
sprintf(buf, "SETA %s", er_roomaide);
serv_puts(buf);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
display_main_menu();
char buf[SIZ], room[SIZ], username[SIZ];
serv_puts("GETR");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
escputs(&buf[4]);
return;
}
- extract(room, &buf[4], 0);
+ extract_token(room, &buf[4], 0, '|', sizeof room);
strcpy(username, bstr("username"));
if (!strcmp(bstr("sc"), "Kick")) {
sprintf(buf, "KICK %s", username);
serv_puts(buf);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
if (!strcmp(bstr("sc"), "Invite")) {
sprintf(buf, "INVT %s", username);
serv_puts(buf);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
char buf[SIZ], room[SIZ], username[SIZ];
serv_puts("GETR");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
escputs(&buf[4]);
return;
}
- extract(room, &buf[4], 0);
+ extract_token(room, &buf[4], 0, '|', sizeof room);
wprintf("<TABLE border=0 CELLSPACING=10><TR VALIGN=TOP>"
wprintf("<INPUT TYPE=\"hidden\" NAME=\"tab\" VALUE=\"access\">\n");
wprintf("<SELECT NAME=\"username\" SIZE=\"10\" style=\"width:100%%\">\n");
serv_puts("WHOK");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '1') {
- while (serv_gets(buf), strcmp(buf, "000")) {
- extract(username, buf, 0);
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ extract_token(username, buf, 0, '|', sizeof username);
wprintf("<OPTION>");
escputs(username);
wprintf("\n");
char buf[SIZ];
serv_puts("CRE8 0");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
wprintf("</CENTER>\n");
wprintf("</FORM>\n<hr />");
serv_printf("MESG roomaccess");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '1') {
fmout(NULL, "CENTER");
}
int rm_bits2;
serv_puts("GETR");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') return;
- extract(rm_name, &buf[4], 0);
- extract(rm_pass, &buf[4], 1);
- extract(rm_dir, &buf[4], 2);
+ extract_token(rm_name, &buf[4], 0, '|', sizeof rm_name);
+ extract_token(rm_pass, &buf[4], 1, '|', sizeof rm_pass);
+ extract_token(rm_dir, &buf[4], 2, '|', sizeof rm_dir);
rm_bits1 = extract_int(&buf[4], 3);
rm_floor = extract_int(&buf[4], 4);
rm_listorder = extract_int(&buf[4], 5);
rm_name, rm_pass, rm_dir, rm_bits1, rm_floor,
rm_listorder, newview, rm_bits2
);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
}
sprintf(buf, "CRE8 1|%s|%d|%s|%d|%d|%d",
er_name, er_num_type, er_password, er_floor, 0, er_view);
serv_puts(buf);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
display_main_menu();
strcat(buf, "|");
strcat(buf, bstr("gr_pass"));
serv_puts(buf);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
smart_goto(bstr("gr_name"));
if (!strcasecmp(bstr("sc"), "OK")) {
serv_printf("GOTO %s", WC->wc_roomname);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
serv_puts("FORG");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
strcpy(final_destination, "_BASEROOM_");
}
-
-/*
- * Confirm deletion of the current room
- */
-void confirm_delete_room(void)
-{
- char buf[SIZ];
-
- serv_puts("KILL 0");
- serv_gets(buf);
- if (buf[0] != '2') {
- strcpy(WC->ImportantMessage, &buf[4]);
- display_main_menu();
- return;
- }
- output_headers(1, 1, 2, 0, 0, 0, 0);
- wprintf("<div id=\"banner\">\n");
- wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#770000\"><TR><TD>");
- wprintf("<SPAN CLASS=\"titlebar\">Confirm deletion of room</SPAN>\n");
- wprintf("</TD></TR></TABLE>\n");
- wprintf("</div>\n<div id=\"content\">\n");
-
- wprintf("<CENTER>");
- wprintf("<FORM METHOD=\"GET\" ACTION=\"/delete_room\">\n");
-
- wprintf("Are you sure you want to delete <FONT SIZE=+1>");
- escputs(WC->wc_roomname);
- wprintf("</FONT>?<br />\n");
-
- wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Delete\">");
- wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">");
-
- wprintf("</FORM></CENTER>\n");
- wDumpContent(1);
-}
-
-
/*
* Delete the current room
*/
void delete_room(void)
{
char buf[SIZ];
- char sc[SIZ];
- strcpy(sc, bstr("sc"));
-
- if (strcasecmp(sc, "Delete")) {
- strcpy(WC->ImportantMessage,
- "Cancelled. This room was not deleted.");
- display_main_menu();
- return;
- }
serv_puts("KILL 1");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
display_main_menu();
}
serv_puts("GNET");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '1') {
fclose(fp);
display_editroom();
}
/* This loop works for add *or* remove. Spiffy, eh? */
- while (serv_gets(buf), strcmp(buf, "000")) {
- extract(cmpa0, buf, 0);
- extract(cmpa1, buf, 1);
- extract(cmpb0, line, 0);
- extract(cmpb1, line, 1);
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ extract_token(cmpa0, buf, 0, '|', sizeof cmpa0);
+ extract_token(cmpa1, buf, 1, '|', sizeof cmpa1);
+ extract_token(cmpb0, line, 0, '|', sizeof cmpb0);
+ extract_token(cmpb1, line, 1, '|', sizeof cmpb1);
if ( (strcasecmp(cmpa0, cmpb0))
|| (strcasecmp(cmpa1, cmpb1)) ) {
fprintf(fp, "%s\n", buf);
rewind(fp);
serv_puts("SNET");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '4') {
fclose(fp);
display_editroom();
char buf[SIZ];
serv_printf("VIEW %d", newview);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
WC->wc_view = newview;
smart_goto(WC->wc_roomname);
}
else {
wprintf("<SPAN CLASS=\"roomlist_old\">");
}
- extract(buf, fold[i].name, levels-1);
+ extract_token(buf, fold[i].name, levels-1, '|', sizeof buf);
escputs(buf);
wprintf("</SPAN>");
if (levels == 1) {
/* Begin inner box */
- extract(buf, fold[i].name, levels-1);
+ extract_token(buf, fold[i].name, levels-1, '|', sizeof buf);
stresc(boxtitle, buf, 1, 0);
svprintf("BOXTITLE", WCS_STRING, boxtitle);
do_template("beginbox");
else {
wprintf("<SPAN CLASS=\"roomlist_old\">");
}
- extract(buf, fold[i].name, levels-1);
+ extract_token(buf, fold[i].name, levels-1, '|', sizeof buf);
escputs(buf);
wprintf("</SPAN>");
if (fold[i].selectable) {
/* Then add floors */
serv_puts("LFLR");
- serv_gets(buf);
- if (buf[0]=='1') while(serv_gets(buf), strcmp(buf, "000")) {
+ serv_getln(buf, sizeof buf);
+ if (buf[0]=='1') while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
if (max_folders >= alloc_folders) {
alloc_folders = max_folders + 100;
fold = realloc(fold,
alloc_folders * sizeof(struct folder));
}
memset(&fold[max_folders], 0, sizeof(struct folder));
- extract(fold[max_folders].name, buf, 1);
+ extract_token(fold[max_folders].name, buf, 1, '|', sizeof fold[max_folders].name);
++max_folders;
++num_floors;
}
/* Now add rooms */
serv_puts("LKRA");
- serv_gets(buf);
- if (buf[0]=='1') while(serv_gets(buf), strcmp(buf, "000")) {
+ serv_getln(buf, sizeof buf);
+ if (buf[0]=='1') while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
if (max_folders >= alloc_folders) {
alloc_folders = max_folders + 100;
fold = realloc(fold,
alloc_folders * sizeof(struct folder));
}
memset(&fold[max_folders], 0, sizeof(struct folder));
- extract(fold[max_folders].room, buf, 0);
+ extract_token(fold[max_folders].room, buf, 0, '|', sizeof fold[max_folders].room);
ra_flags = extract_int(buf, 5);
flags = extract_int(buf, 1);
fold[max_folders].floor = extract_int(buf, 2);
}
}
- get_preference("roomlistview", listviewpref);
+ get_preference("roomlistview", listviewpref, sizeof listviewpref);
if ( (strcasecmp(listviewpref, "folders"))
&& (strcasecmp(listviewpref, "table")) ) {
}
serv_printf("SPEX room|%d|%d", atoi(bstr("roompolicy")), atoi(bstr("roomvalue")));
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
strcpy(WC->ImportantMessage, &buf[4]);
if (WC->axlevel >= 6) {
strcat(WC->ImportantMessage, "<br />\n");
serv_printf("SPEX floor|%d|%d", atoi(bstr("floorpolicy")), atoi(bstr("floorvalue")));
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
strcat(WC->ImportantMessage, &buf[4]);
}