NTTList: move into networking module
[citadel.git] / citadel / file_ops.c
index bb5e985a6c0e5c866f2207bb01db71dbd4475b9f..d1b529d57efada1399545722745c3873bdf07e5c 100644 (file)
 #include "ctdl_module.h"
 #include "user_ops.h"
 
-/*
- * network_talking_to()  --  concurrency checker
- */
-static char *nttlist = NULL;
-int network_talking_to(char *nodename, int operation) {
-
-       char *ptr = NULL;
-       int i;
-       char buf[SIZ];
-       int retval = 0;
-
-       begin_critical_section(S_NTTLIST);
-
-       switch(operation) {
-
-               case NTT_ADD:
-                       if (nttlist == NULL) nttlist = strdup("");
-                       if (nttlist == NULL) break;
-                       nttlist = (char *)realloc(nttlist,
-                               (strlen(nttlist) + strlen(nodename) + 3) );
-                       strcat(nttlist, "|");
-                       strcat(nttlist, nodename);
-                       break;
-
-               case NTT_REMOVE:
-                       if (nttlist == NULL) break;
-                       if (IsEmptyStr(nttlist)) break;
-                       ptr = malloc(strlen(nttlist));
-                       if (ptr == NULL) break;
-                       strcpy(ptr, "");
-                       for (i = 0; i < num_tokens(nttlist, '|'); ++i) {
-                               extract_token(buf, nttlist, i, '|', sizeof buf);
-                               if ( (!IsEmptyStr(buf))
-                                    && (strcasecmp(buf, nodename)) ) {
-                                               strcat(ptr, buf);
-                                               strcat(ptr, "|");
-                               }
-                       }
-                       free(nttlist);
-                       nttlist = ptr;
-                       break;
-
-               case NTT_CHECK:
-                       if (nttlist == NULL) break;
-                       if (IsEmptyStr(nttlist)) break;
-                       for (i = 0; i < num_tokens(nttlist, '|'); ++i) {
-                               extract_token(buf, nttlist, i, '|', sizeof buf);
-                               if (!strcasecmp(buf, nodename)) ++retval;
-                       }
-                       break;
-       }
-
-       if (nttlist != NULL) syslog(LOG_DEBUG, "nttlist=<%s>\n", nttlist);
-       end_critical_section(S_NTTLIST);
-       return(retval);
-}
-
-void cleanup_nttlist(void)
-{
-        begin_critical_section(S_NTTLIST);
-       if (nttlist != NULL)
-               free(nttlist);
-       nttlist = NULL;
-        end_critical_section(S_NTTLIST);
-}
-
 
 
 /*
@@ -169,7 +103,6 @@ void cmd_movf(char *cmdbuf)
        char buf[PATH_MAX];
        int a;
        struct ctdlroom qrbuf;
-       int rv = 0;
 
        extract_token(filename, cmdbuf, 0, '|', sizeof filename);
        extract_token(newroom, cmdbuf, 1, '|', sizeof newroom);
@@ -223,7 +156,7 @@ void cmd_movf(char *cmdbuf)
        snprintf(buf, sizeof buf,
                 "cat ./files/%s/filedir |grep \"%s\" >>./files/%s/filedir",
                 CC->room.QRdirname, filename, qrbuf.QRdirname);
-       rv = system(buf);
+       system(buf);
        cprintf("%d File '%s' has been moved.\n", CIT_OK, filename);
 }
 
@@ -373,6 +306,12 @@ void cmd_oimg(char *cmdbuf)
                return;
        }
        rv = fread(&MimeTestBuf[0], 1, 32, CC->download_fp);
+       if (rv == -1) {
+               cprintf("%d Cannot access %s: %s\n",
+                       ERROR + FILE_NOT_FOUND, pathname, strerror(errno));
+               return;
+       }
+
        rewind (CC->download_fp);
        OpenCmdResult(pathname, GuessMimeType(&MimeTestBuf[0], 32));
 }
@@ -697,15 +636,17 @@ void cmd_writ(char *cmdbuf)
        }
 
        if (bytes > 100000) {
-               cprintf("%d You may not write more than 100000 bytes.\n",
-                       ERROR + TOO_BIG);
-               return;
+               bytes = 100000;
        }
 
        cprintf("%d %d\n", SEND_BINARY, bytes);
        buf = malloc(bytes + 1);
        client_read(buf, bytes);
        rv = fwrite(buf, bytes, 1, CC->upload_fp);
+       if (rv == -1) {
+               syslog(LOG_EMERG, "Couldn't write: %s\n",
+                      strerror(errno));
+       }
        free(buf);
 }
 
@@ -817,6 +758,7 @@ void cmd_nuop(char *cmdbuf)
 CTDL_MODULE_INIT(file_ops)
 {
        if (!threading) {
+
                CtdlRegisterProtoHook(cmd_delf, "DELF", "Delete a file");
                CtdlRegisterProtoHook(cmd_movf, "MOVF", "Move a file");
                CtdlRegisterProtoHook(cmd_open, "OPEN", "Open a download file transfer");
@@ -829,7 +771,6 @@ CTDL_MODULE_INIT(file_ops)
                CtdlRegisterProtoHook(cmd_nuop, "NUOP", "Open a network spool file for upload");
                CtdlRegisterProtoHook(cmd_oimg, "OIMG", "Open an image file for download");
                CtdlRegisterProtoHook(cmd_uimg, "UIMG", "Upload an image file");
-               CtdlRegisterCleanupHook(cleanup_nttlist);
        }
         /* return our Subversion id for the Log */
        return "file_ops";