X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Froomops.c;h=b6fdaa8df8113f5154a3bddd45c2e60050fcb920;hb=4840b5b6dfe82499f2274aeff0229e4aaf2ef0c1;hp=b93a4910dae0f249182604160dc92974e39cc5bf;hpb=a1ba09ef9d23f1f047cec4b17ae0a3b88c01979d;p=citadel.git diff --git a/webcit/roomops.c b/webcit/roomops.c index b93a4910d..b6fdaa8df 100644 --- a/webcit/roomops.c +++ b/webcit/roomops.c @@ -354,16 +354,12 @@ void ParseGoto(folder *room, StrBuf *Line) */ void delete_room(void) { - char buf[SIZ]; - + StrBuf *Line; serv_puts("KILL 1"); - serv_getln(buf, sizeof buf); - - if (buf[0] != '2') { - strcpy(WC->ImportantMessage, &buf[4]); + StrBuf_ServGetln(Line); + if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { display_main_menu(); - return; } else { StrBuf *Buf; @@ -372,6 +368,7 @@ void delete_room(void) smart_goto(Buf); FreeStrBuf(&Buf); } + FreeStrBuf(&Line); } /* @@ -484,7 +481,7 @@ int SaveRoomAide(folder *Room) } -int GetCurrentRoomFlags(folder *Room) +int GetCurrentRoomFlags(folder *Room, int CareForStatusMessage) { StrBuf *Buf; @@ -495,8 +492,10 @@ int GetCurrentRoomFlags(folder *Room) FlushStrBuf(Room->XAPass); FlushStrBuf(Room->Directory); StrBufCutLeft(Buf, 4); - AppendImportantMessage (SKEY(Buf)); + if (CareForStatusMessage) + AppendImportantMessage (SKEY(Buf)); FreeStrBuf(&Buf); + Room->XALoaded = 2; return 0; } else { const char *Pos; @@ -563,10 +562,10 @@ void LoadRoomXA (void) { wcsession *WCC = WC; - if (WCC->CurRoom.XALoaded) + if (WCC->CurRoom.XALoaded > 0) return; - GetCurrentRoomFlags(&WCC->CurRoom); + GetCurrentRoomFlags(&WCC->CurRoom, 0); } @@ -661,7 +660,7 @@ void LoadXRoomXCountFiles(void) void toggle_self_service(void) { wcsession *WCC = WC; - if (GetCurrentRoomFlags (&WCC->CurRoom) == 0) + if (GetCurrentRoomFlags (&WCC->CurRoom, 1) == 0) return; if (yesbstr("QR2_SelfList")) @@ -706,13 +705,14 @@ void editroom(void) int succ1, succ2; if (!havebstr("ok_button")) { - strcpy(WC->ImportantMessage, - _("Cancelled. Changes were not saved.")); + AppendImportantMessage(_("Cancelled. Changes were not saved."), -1); http_transmit_thing(ChrPtr(do_template("room_edit")), 0); return; } - if (GetCurrentRoomFlags (&WCC->CurRoom) == 0) + if (GetCurrentRoomFlags (&WCC->CurRoom, 1) == 0) { + http_transmit_thing(ChrPtr(do_template("room_edit")), 0); return; + } LoadRoomAide(); @@ -853,7 +853,7 @@ void do_invt_kick(void) wcsession *WCC = WC; - if (GetCurrentRoomFlags(&WCC->CurRoom) == 1) + if (GetCurrentRoomFlags(&WCC->CurRoom, 1) == 1) { const char *Pos; UserNames = sbstr("username"); @@ -914,7 +914,7 @@ void do_invt_kick(void) */ void entroom(void) { - char buf[SIZ]; + StrBuf *Line; const StrBuf *er_name; const StrBuf *er_type; const StrBuf *er_password; @@ -924,8 +924,7 @@ void entroom(void) wcsession *WCC = WC; if (!havebstr("ok_button")) { - strcpy(WC->ImportantMessage, - _("Cancelled. No new room was created.")); + AppendImportantMessage(_("Cancelled. No new room was created."), -1); display_main_menu(); return; } @@ -953,9 +952,10 @@ void entroom(void) 0, er_view); - serv_getln(buf, sizeof buf); - if (buf[0] != '2') { - strcpy(WCC->ImportantMessage, &buf[4]); + Line = NewStrBuf(); + StrBuf_ServGetln(Line); + if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { + FreeStrBuf(&Line); display_main_menu(); return; } @@ -963,7 +963,8 @@ void entroom(void) gotoroom(er_name); serv_printf("VIEW %d", er_view); - serv_getln(buf, sizeof buf); + StrBuf_ServGetln(Line); + FreeStrBuf(&Line); /* TODO: should we care about errors? */ WCC->CurRoom.view = er_view; if ( (WCC != NULL) && ( (WCC->CurRoom.RAFlags & UA_ADMINALLOWED) != 0) ) { @@ -971,7 +972,7 @@ void entroom(void) } else { smart_goto(WCC->CurRoom.name); } - + FreeStrBuf(&Line); } @@ -998,25 +999,24 @@ void change_view(void) { * Set the message expire policy for this room and/or floor */ void set_room_policy(void) { - char buf[SIZ]; + StrBuf *Line; if (!havebstr("ok_button")) { - strcpy(WC->ImportantMessage, - _("Cancelled. Changes were not saved.")); + AppendImportantMessage(_("Cancelled. Changes were not saved."), -1); http_transmit_thing(ChrPtr(do_template("room_edit")), 0); return; } + Line = NewStrBuf(); serv_printf("SPEX roompolicy|%d|%d", ibstr("roompolicy"), ibstr("roomvalue")); - serv_getln(buf, sizeof buf); - strcpy(WC->ImportantMessage, &buf[4]); - + StrBuf_ServGetln(Line); + GetServerStatusMsg(Line, NULL, 1, 0); if (WC->axlevel >= 6) { - strcat(WC->ImportantMessage, "
\n"); serv_printf("SPEX floorpolicy|%d|%d", ibstr("floorpolicy"), ibstr("floorvalue")); - serv_getln(buf, sizeof buf); - strcat(WC->ImportantMessage, &buf[4]); + StrBuf_ServGetln(Line); + GetServerStatusMsg(Line, NULL, 1, 0); } + FreeStrBuf(&Line); ReloadCurrentRoom(); http_transmit_thing(ChrPtr(do_template("room_edit")), 0); } @@ -1027,7 +1027,6 @@ void set_room_policy(void) { * Perform changes to a room's network configuration */ void netedit(void) { - FILE *fp; char buf[SIZ]; char line[SIZ]; char cmpa0[SIZ]; @@ -1036,6 +1035,7 @@ void netedit(void) { char cmpb1[SIZ]; int i, num_addrs; StrBuf *Line; + StrBuf *TmpBuf; int Done; /*/ TODO: do line dynamic! */ @@ -1062,18 +1062,11 @@ void netedit(void) { return; } - - fp = tmpfile(); - if (fp == NULL) { - http_transmit_thing(ChrPtr(do_template("room_edit")), 0); - return; - } - Line = NewStrBuf(); + TmpBuf = NewStrBuf(); serv_puts("GNET"); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) != 1) { - fclose(fp); AppendImportantMessage(SRV_STATUS_MSG(Line)); FreeStrBuf(&Line); http_transmit_thing(ChrPtr(do_template("room_edit")), 0); @@ -1097,26 +1090,24 @@ void netedit(void) { if ( (strcasecmp(cmpa0, cmpb0)) || (strcasecmp(cmpa1, cmpb1)) ) { StrBufAppendBufPlain(Line, HKEY("\n"), 0); - fwrite(SKEY(Line), 1, fp); + StrBufAppendBuf(TmpBuf, Line, 0); } } } - rewind(fp); serv_puts("SNET"); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) != 4) { - fclose(fp); + AppendImportantMessage(SRV_STATUS_MSG(Line)); http_transmit_thing(ChrPtr(do_template("room_edit")), 0); FreeStrBuf(&Line); + FreeStrBuf(&TmpBuf); return; } - while (fgets(buf, sizeof buf, fp) != NULL) { - buf[strlen(buf)-1] = 0; - serv_puts(buf); - } + serv_putbuf(TmpBuf); + FreeStrBuf(&TmpBuf); if (havebstr("add_button")) { num_addrs = num_tokens(bstr("line"), ','); @@ -1138,7 +1129,6 @@ void netedit(void) { } serv_puts("000"); - fclose(fp); FlushIgnetCfgs(&WC->CurRoom); FreeStrBuf(&Line);