Remove $Id$ tags from most of webcit
[citadel.git] / webcit / downloads.c
index ba8d03a1d69e11c20b421a7dbda2208cbf80e19d..5701caeb834041af93c5a8182dfa936eece15752 100644 (file)
@@ -1,5 +1,19 @@
 /*
- * $Id$
+ * Copyright (c) 1996-2010 by the citadel.org team
+ *
+ * This program is free 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.
+ *
+ * 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"
 #include "webserver.h"
@@ -175,7 +189,7 @@ HashList* LoadFileList(StrBuf *Target, WCTemplputParams *TP)
        int HavePic;
        WCTemplputParams SubTP;
 
-       memset(&TP, 0, sizeof(WCTemplputParams));
+       memset(&SubTP, 0, sizeof(WCTemplputParams));
        serv_puts("RDIR");
        serv_getln(buf, sizeof buf);
        if (buf[0] != '1') return NULL;
@@ -217,7 +231,6 @@ HashList* LoadFileList(StrBuf *Target, WCTemplputParams *TP)
        else 
                SortByPayload(Files, CompareFilelistBySequence);
        FreeStrBuf(&Buf);
-       svputlong("FILE:HAVEPICS", HavePic);
        return Files;
 }
 
@@ -259,7 +272,7 @@ void download_file(void)
                if (!force_download) {
                        StrBufExtract_token(ContentType, Buf, 3, '|');
                }
-               read_server_binary(WCC->WBuf, bytes, Buf);
+               serv_read_binary(WCC->WBuf, bytes, Buf);
                serv_puts("CLOS");
                StrBuf_ServGetln(Buf);
                http_transmit_thing(ChrPtr(ContentType), 0);
@@ -268,7 +281,7 @@ void download_file(void)
                hprintf("HTTP/1.1 404 %s\n", ChrPtr(Buf));
                output_headers(0, 0, 0, 0, 0, 0);
                hprintf("Content-Type: text/plain\r\n");
-               wprintf(_("An error occurred while retrieving this file: %s\n"), 
+               wc_printf(_("An error occurred while retrieving this file: %s\n"), 
                        ChrPtr(Buf));
                end_burst();
        }
@@ -280,6 +293,7 @@ void download_file(void)
 
 void delete_file(void)
 {
+       const StrBuf *MimeType;
        StrBuf *Buf;
        char buf[256];
        
@@ -291,9 +305,8 @@ void delete_file(void)
        GetServerStatus(Buf, NULL);
        StrBufCutLeft(Buf, 4);
        strcpy(WC->ImportantMessage, ChrPtr(Buf));
-       do_template("files", CTX_NONE);
-       output_headers(0, 0, 0, 0, 0, 0);
-       end_burst();
+       MimeType = DoTemplate(HKEY("files"), NULL, &NoCtx);
+       http_transmit_thing(ChrPtr(MimeType), 0);
        FreeStrBuf(&Buf);
 }
 
@@ -301,21 +314,29 @@ void delete_file(void)
 
 void upload_file(void)
 {
+       const StrBuf *RetMimeType;
        const char *MimeType;
        char buf[1024];
        long bytes_transmitted = 0;
        long blocksize;
+       const StrBuf *Desc;
        wcsession *WCC = WC;     /* stack this for faster access (WC is a function) */
 
-       MimeType = GuessMimeType(WCC->upload, WCC->upload_length); 
-       serv_printf("UOPN %s|%s|%s", WCC->upload_filename, MimeType, bstr("description"));
+       MimeType = GuessMimeType(ChrPtr(WCC->upload), WCC->upload_length); 
+
+               Desc = sbstr("description");
+
+       serv_printf("UOPN %s|%s|%s", 
+                   ChrPtr(WCC->upload_filename), 
+                   MimeType, 
+                   ChrPtr(Desc));
+
        serv_getln(buf, sizeof buf);
        if (buf[0] != '2')
        {
                strcpy(WCC->ImportantMessage, &buf[4]);
-               do_template("files", NULL);
-               output_headers(0, 0, 0, 0, 0, 0);
-               end_burst();
+               RetMimeType = DoTemplate(HKEY("files"), NULL, &NoCtx);
+               http_transmit_thing(ChrPtr(RetMimeType), 0);
                return;
        }
 
@@ -331,7 +352,7 @@ void upload_file(void)
                if (buf[0] == '7')
                {
                        blocksize = atoi(&buf[4]);
-                       serv_write(&WCC->upload[bytes_transmitted], blocksize);
+                       serv_write(&ChrPtr(WCC->upload)[bytes_transmitted], blocksize);
                        bytes_transmitted += blocksize;
                }
        }
@@ -339,9 +360,8 @@ void upload_file(void)
        serv_puts("UCLS 1");
        serv_getln(buf, sizeof buf);
        strcpy(WCC->ImportantMessage, &buf[4]);
-       do_template("files", CTX_NONE);
-       output_headers(0, 0, 0, 0, 0, 0);
-       end_burst();
+       RetMimeType = DoTemplate(HKEY("files"), NULL, &NoCtx);
+       http_transmit_thing(ChrPtr(RetMimeType), 0);
 }
 
 
@@ -361,15 +381,17 @@ void output_image(void)
        serv_printf("OIMG %s|%s", bstr("name"), bstr("parm"));
        StrBuf_ServGetln(Buf);
        if (GetServerStatus(Buf, NULL) == 2) {
+               int rc;
                StrBufCutLeft(Buf, 4);
                bytes = StrBufExtract_long(Buf, 0, '|');
 
                /** Read it from the server */
                
-               if (read_server_binary(WCC->WBuf, bytes, Buf) > 0) {
-                       serv_puts("CLOS");
-                       StrBuf_ServGetln(Buf);
+               rc = serv_read_binary(WCC->WBuf, bytes, Buf);
+               serv_puts("CLOS");
+               StrBuf_ServGetln(Buf);
                
+               if (rc > 0) {
                        MimeType = GuessMimeType (ChrPtr(WCC->WBuf), StrLength(WCC->WBuf));
                        /** Write it to the browser */
                        if (!IsEmptyStr(MimeType))
@@ -432,16 +454,16 @@ InitModule_DOWNLOAD
                         GroupchangeFilelistBySequence,
                         CTX_FILELIST);
 
-       RegisterNamespace("FILE:NAME", 0, 2, tmplput_FILE_NAME, CTX_FILELIST);
-       RegisterNamespace("FILE:SIZE", 0, 1, tmplput_FILE_SIZE, CTX_FILELIST);
-       RegisterNamespace("FILE:MIMETYPE", 0, 2, tmplput_FILEMIMETYPE, CTX_FILELIST);
-       RegisterNamespace("FILE:COMMENT", 0, 2, tmplput_FILE_COMMENT, CTX_FILELIST);
+       RegisterNamespace("FILE:NAME", 0, 2, tmplput_FILE_NAME, NULL, CTX_FILELIST);
+       RegisterNamespace("FILE:SIZE", 0, 1, tmplput_FILE_SIZE, NULL, CTX_FILELIST);
+       RegisterNamespace("FILE:MIMETYPE", 0, 2, tmplput_FILEMIMETYPE, NULL, CTX_FILELIST);
+       RegisterNamespace("FILE:COMMENT", 0, 2, tmplput_FILE_COMMENT, NULL, CTX_FILELIST);
 
        RegisterConditional(HKEY("COND:FILE:ISPIC"), 0, Conditional_FILE_ISPIC, CTX_FILELIST);
 
-       WebcitAddUrlHandler(HKEY("image"), output_image, ANONYMOUS);
-       WebcitAddUrlHandler(HKEY("display_mime_icon"), display_mime_icon , ANONYMOUS);
-       WebcitAddUrlHandler(HKEY("download_file"), download_file, NEED_URL);
-       WebcitAddUrlHandler(HKEY("delete_file"), delete_file, NEED_URL);
-       WebcitAddUrlHandler(HKEY("upload_file"), upload_file, 0);
+       WebcitAddUrlHandler(HKEY("image"), "", 0, output_image, ANONYMOUS);
+       WebcitAddUrlHandler(HKEY("display_mime_icon"), "", 0, display_mime_icon , ANONYMOUS);
+       WebcitAddUrlHandler(HKEY("download_file"), "", 0, download_file, NEED_URL);
+       WebcitAddUrlHandler(HKEY("delete_file"), "", 0, delete_file, NEED_URL);
+       WebcitAddUrlHandler(HKEY("upload_file"), "", 0, upload_file, 0);
 }