X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fgraphics.c;h=863242f810bb84609043e749e404ce18515462b0;hb=d1dcc57fd3286c9e38b7f15eb2fb047279232628;hp=f798cc3e5bf1cb99e0eb70b7a499ebaa8cd2b78b;hpb=7744483ccb08fbf027b1052dc03ac06f8c69d77c;p=citadel.git diff --git a/webcit/graphics.c b/webcit/graphics.c index f798cc3e5..863242f81 100644 --- a/webcit/graphics.c +++ b/webcit/graphics.c @@ -1,104 +1,133 @@ /* * Handles HTTP upload of graphics files into the system. * - * Copyright (c) 1996-2011 by the citadel.org team + * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 3 of the - * License, or (at your option) any later version. + * modify it under the terms of the GNU General Public License, version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "webcit.h" +extern void output_static(const char* What); + + +// upload your photo +void editpic(void) +{ + if (havebstr("cancel_button")) { + AppendImportantMessage(_("Graphics upload has been cancelled."), -1); + display_main_menu(); + return; + } + + if (WC->upload_length == 0) { + AppendImportantMessage(_("You didn't upload a file."), -1); + display_main_menu(); + return; + } + + serv_printf("ULUI %ld|%s", (long)WC->upload_length, GuessMimeType(ChrPtr(WC->upload), WC->upload_length)); + StrBuf *Line = NewStrBuf(); + StrBuf_ServGetln(Line); + if (GetServerStatusMsg(Line, NULL, 0, 0) == 7) { + serv_write(ChrPtr(WC->upload), WC->upload_length); + display_success(ChrPtr(Line) + 4); + } + else { + AppendImportantMessage((ChrPtr(Line) + 4), -1); + display_main_menu(); + } + FreeStrBuf(&Line); +} + + void display_graphics_upload(char *filename) { - char buf[SIZ]; + StrBuf *Line; - snprintf(buf, SIZ, "UIMG 0||%s", filename); - serv_puts(buf); - serv_getln(buf, sizeof buf); - if (buf[0] != '2') { - strcpy(WC->ImportantMessage, &buf[4]); + Line = NewStrBuf(); + serv_printf("UIMG 0||%s", filename); + StrBuf_ServGetln(Line); + if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { display_main_menu(); return; } - output_headers(1, 0, 0, 0, 1, 0); - do_template("files_graphicsupload"); - end_burst(); + else + { + output_headers(1, 0, 0, 0, 1, 0); + do_template("files_graphicsupload"); + end_burst(); + } + FreeStrBuf(&Line); } void do_graphics_upload(char *filename) { + StrBuf *Line; const char *MimeType; wcsession *WCC = WC; - char buf[SIZ]; int bytes_remaining; int pos = 0; int thisblock; bytes_remaining = WCC->upload_length; if (havebstr("cancel_button")) { - strcpy(WC->ImportantMessage, - _("Graphics upload has been cancelled.")); + AppendImportantMessage(_("Graphics upload has been cancelled."), -1); display_main_menu(); return; } if (WCC->upload_length == 0) { - strcpy(WC->ImportantMessage, - _("You didn't upload a file.")); + AppendImportantMessage(_("You didn't upload a file."), -1); display_main_menu(); return; } MimeType = GuessMimeType(ChrPtr(WCC->upload), bytes_remaining); - snprintf(buf, SIZ, "UIMG 1|%s|%s", MimeType, filename); - serv_puts(buf); + serv_printf("UIMG 1|%s|%s", MimeType, filename); - 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) { display_main_menu(); + FreeStrBuf(&Line); return; } while (bytes_remaining) { thisblock = ((bytes_remaining > 4096) ? 4096 : bytes_remaining); serv_printf("WRIT %d", thisblock); - serv_getln(buf, sizeof buf); - if (buf[0] != '7') { - strcpy(WCC->ImportantMessage, &buf[4]); + StrBuf_ServGetln(Line); + if (GetServerStatusMsg(Line, NULL, 1, 7) != 7) { serv_puts("UCLS 0"); - serv_getln(buf, sizeof buf); + StrBuf_ServGetln(Line); display_main_menu(); + FreeStrBuf(&Line); return; } - thisblock = extract_int(&buf[4], 0); + thisblock = extract_int(ChrPtr(Line) +4, 0); serv_write(&ChrPtr(WCC->upload)[pos], thisblock); - pos = pos + thisblock; - bytes_remaining = bytes_remaining - thisblock; + pos += thisblock; + bytes_remaining -= thisblock; } serv_puts("UCLS 1"); - serv_getln(buf, sizeof buf); - if (buf[0] != 'x') { - display_success(&buf[4]); - return; + StrBuf_ServGetln(Line); + if (*ChrPtr(Line) != 'x') { + display_success(ChrPtr(Line) + 4); + } + FreeStrBuf(&Line); + } void edithellopic(void) { do_graphics_upload("hello"); } -void editpic(void) { do_graphics_upload("_userpic_"); } void editgoodbuyepic(void) { do_graphics_upload("UIMG 1|%s|goodbuye"); } /* The users photo display / upload facility */ @@ -132,17 +161,6 @@ void display_editgoodbyepic(void) { display_graphics_upload("editgoodbuyepic"); } -void display_editfloorpic(void) { - StrBuf *PicAction; - - PicAction = NewStrBuf(); - StrBufPrintf(PicAction, "_floorpic_|%s", bstr("which_floor")); - putbstr("__WHICHPIC", PicAction); - putbstr("__PICDESC", NewStrBufPlain(_("the icon for this floor"), -1)); - putbstr("__UPLURL", NewStrBufPlain(HKEY("editfloorpic"))); - display_graphics_upload("editfloorpic"); -} - void editroompic(void) { char buf[SIZ]; snprintf(buf, SIZ, "_roompic_|%s", @@ -150,13 +168,6 @@ void editroompic(void) { do_graphics_upload(buf); } -void editfloorpic(void){ - char buf[SIZ]; - snprintf(buf, SIZ, "_floorpic_|%s", - bstr("which_floor")); - do_graphics_upload(buf); -} - void InitModule_GRAPHICS (void) @@ -169,6 +180,4 @@ InitModule_GRAPHICS WebcitAddUrlHandler(HKEY("edithellopic"), "", 0, edithellopic, 0); WebcitAddUrlHandler(HKEY("display_editgoodbuye"), "", 0, display_editgoodbyepic, 0); WebcitAddUrlHandler(HKEY("editgoodbuyepic"), "", 0, editgoodbuyepic, 0); - WebcitAddUrlHandler(HKEY("display_editfloorpic"), "", 0, display_editfloorpic, 0); - WebcitAddUrlHandler(HKEY("editfloorpic"), "", 0, editfloorpic, 0); }